<!DOCTYPE html>

<html>
  <head>
    <title>Protocol Documentation</title>
    <meta charset="UTF-8">
    <link rel="stylesheet" type="text/css" href="https://fonts.googleapis.com/css?family=Ubuntu:400,700,400italic"/>
    <style>
      body {
        width: 60em;
        margin: 1em auto;
        color: #222;
        font-family: "Ubuntu", sans-serif;
        padding-bottom: 4em;
      }

      h1 {
        font-weight: normal;
        border-bottom: 1px solid #aaa;
        padding-bottom: 0.5ex;
      }

      h2 {
        border-bottom: 1px solid #aaa;
        padding-bottom: 0.5ex;
        margin: 1.5em 0;
      }

      h3 {
        font-weight: normal;
        border-bottom: 1px solid #aaa;
        padding-bottom: 0.5ex;
      }

      a {
        text-decoration: none;
        color: #567e25;
      }

      table {
        width: 100%;
        font-size: 80%;
        border-collapse: collapse;
      }

      thead {
        font-weight: 700;
        background-color: #dcdcdc;
      }

      tbody tr:nth-child(even) {
        background-color: #fbfbfb;
      }

      td {
        border: 1px solid #ccc;
        padding: 0.5ex 2ex;
      }

      td p {
        text-indent: 1em;
        margin: 0;
      }

      td p:nth-child(1) {
        text-indent: 0;  
      }

       
      .field-table td:nth-child(1) {  
        width: 10em;
      }
      .field-table td:nth-child(2) {  
        width: 10em;
      }
      .field-table td:nth-child(3) {  
        width: 6em;
      }
      .field-table td:nth-child(4) {  
        width: auto;
      }

       
      .extension-table td:nth-child(1) {  
        width: 10em;
      }
      .extension-table td:nth-child(2) {  
        width: 10em;
      }
      .extension-table td:nth-child(3) {  
        width: 10em;
      }
      .extension-table td:nth-child(4) {  
        width: 5em;
      }
      .extension-table td:nth-child(5) {  
        width: auto;
      }

       
      .enum-table td:nth-child(1) {  
        width: 10em;
      }
      .enum-table td:nth-child(2) {  
        width: 10em;
      }
      .enum-table td:nth-child(3) {  
        width: auto;
      }

       
      .scalar-value-types-table tr {
        height: 3em;
      }

       
      #toc-container ul {
        list-style-type: none;
        padding-left: 1em;
        line-height: 180%;
        margin: 0;
      }
      #toc > li > a {
        font-weight: bold;
      }

       
      .file-heading {
        width: 100%;
        display: table;
        border-bottom: 1px solid #aaa;
        margin: 4em 0 1.5em 0;
      }
      .file-heading h2 {
        border: none;
        display: table-cell;
      }
      .file-heading a {
        text-align: right;
        display: table-cell;
      }

       
      .badge {
        width: 1.6em;
        height: 1.6em;
        display: inline-block;

        line-height: 1.6em;
        text-align: center;
        font-weight: bold;
        font-size: 60%;

        color: #89ba48;
        background-color: #dff0c8;

        margin: 0.5ex 1em 0.5ex -1em;
        border: 1px solid #fbfbfb;
        border-radius: 1ex;
      }
    </style>

    
    <link rel="stylesheet" type="text/css" href="stylesheet.css"/>
  </head>

  <body>

    <h1 id="title">Protocol Documentation</h1>

    <h2>Table of Contents</h2>

    <div id="toc-container">
      <ul id="toc">
        
          
          <li>
            <a href="#v1%2fannotation.proto">v1/annotation.proto</a>
            <ul>
              
              
                <li>
                  <a href="#bytebase.v1.AuthMethod"><span class="badge">E</span>AuthMethod</a>
                </li>
              
              
                <li>
                  <a href="#v1%2fannotation.proto-extensions"><span class="badge">X</span>File-level Extensions</a>
                </li>
              
                <li>
                  <a href="#v1%2fannotation.proto-extensions"><span class="badge">X</span>File-level Extensions</a>
                </li>
              
                <li>
                  <a href="#v1%2fannotation.proto-extensions"><span class="badge">X</span>File-level Extensions</a>
                </li>
              
                <li>
                  <a href="#v1%2fannotation.proto-extensions"><span class="badge">X</span>File-level Extensions</a>
                </li>
              
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2fcommon.proto">v1/common.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.Position"><span class="badge">M</span>Position</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Range"><span class="badge">M</span>Range</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.DatabaseChangeType"><span class="badge">E</span>DatabaseChangeType</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Engine"><span class="badge">E</span>Engine</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ExportFormat"><span class="badge">E</span>ExportFormat</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.RiskLevel"><span class="badge">E</span>RiskLevel</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.State"><span class="badge">E</span>State</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.VCSType"><span class="badge">E</span>VCSType</a>
                </li>
              
              
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2fissue_service.proto">v1/issue_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.ApprovalFlow"><span class="badge">M</span>ApprovalFlow</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ApprovalTemplate"><span class="badge">M</span>ApprovalTemplate</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ApproveIssueRequest"><span class="badge">M</span>ApproveIssueRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchUpdateIssuesStatusRequest"><span class="badge">M</span>BatchUpdateIssuesStatusRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchUpdateIssuesStatusResponse"><span class="badge">M</span>BatchUpdateIssuesStatusResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.CreateIssueCommentRequest"><span class="badge">M</span>CreateIssueCommentRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.CreateIssueRequest"><span class="badge">M</span>CreateIssueRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetIssueRequest"><span class="badge">M</span>GetIssueRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GrantRequest"><span class="badge">M</span>GrantRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Issue"><span class="badge">M</span>Issue</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Issue.Approver"><span class="badge">M</span>Issue.Approver</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Issue.TaskStatusCountEntry"><span class="badge">M</span>Issue.TaskStatusCountEntry</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.IssueComment"><span class="badge">M</span>IssueComment</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.IssueComment.Approval"><span class="badge">M</span>IssueComment.Approval</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.IssueComment.IssueUpdate"><span class="badge">M</span>IssueComment.IssueUpdate</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.IssueComment.StageEnd"><span class="badge">M</span>IssueComment.StageEnd</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.IssueComment.TaskPriorBackup"><span class="badge">M</span>IssueComment.TaskPriorBackup</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.IssueComment.TaskPriorBackup.Table"><span class="badge">M</span>IssueComment.TaskPriorBackup.Table</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.IssueComment.TaskUpdate"><span class="badge">M</span>IssueComment.TaskUpdate</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListIssueCommentsRequest"><span class="badge">M</span>ListIssueCommentsRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListIssueCommentsResponse"><span class="badge">M</span>ListIssueCommentsResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListIssuesRequest"><span class="badge">M</span>ListIssuesRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListIssuesResponse"><span class="badge">M</span>ListIssuesResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.RejectIssueRequest"><span class="badge">M</span>RejectIssueRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.RequestIssueRequest"><span class="badge">M</span>RequestIssueRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SearchIssuesRequest"><span class="badge">M</span>SearchIssuesRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SearchIssuesResponse"><span class="badge">M</span>SearchIssuesResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UpdateIssueCommentRequest"><span class="badge">M</span>UpdateIssueCommentRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UpdateIssueRequest"><span class="badge">M</span>UpdateIssueRequest</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.Issue.ApprovalStatus"><span class="badge">E</span>Issue.ApprovalStatus</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Issue.Approver.Status"><span class="badge">E</span>Issue.Approver.Status</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Issue.Type"><span class="badge">E</span>Issue.Type</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.IssueComment.Approval.Status"><span class="badge">E</span>IssueComment.Approval.Status</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.IssueComment.TaskUpdate.Status"><span class="badge">E</span>IssueComment.TaskUpdate.Status</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.IssueStatus"><span class="badge">E</span>IssueStatus</a>
                </li>
              
              
              
                <li>
                  <a href="#bytebase.v1.IssueService"><span class="badge">S</span>IssueService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2fiam_policy.proto">v1/iam_policy.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.Binding"><span class="badge">M</span>Binding</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BindingDelta"><span class="badge">M</span>BindingDelta</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetIamPolicyRequest"><span class="badge">M</span>GetIamPolicyRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.IamPolicy"><span class="badge">M</span>IamPolicy</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.PolicyDelta"><span class="badge">M</span>PolicyDelta</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SetIamPolicyRequest"><span class="badge">M</span>SetIamPolicyRequest</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.BindingDelta.Action"><span class="badge">E</span>BindingDelta.Action</a>
                </li>
              
              
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2fproject_service.proto">v1/project_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.Activity"><span class="badge">M</span>Activity</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.AddWebhookRequest"><span class="badge">M</span>AddWebhookRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchDeleteProjectsRequest"><span class="badge">M</span>BatchDeleteProjectsRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchGetIamPolicyRequest"><span class="badge">M</span>BatchGetIamPolicyRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchGetIamPolicyResponse"><span class="badge">M</span>BatchGetIamPolicyResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchGetIamPolicyResponse.PolicyResult"><span class="badge">M</span>BatchGetIamPolicyResponse.PolicyResult</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.CreateProjectRequest"><span class="badge">M</span>CreateProjectRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DeleteProjectRequest"><span class="badge">M</span>DeleteProjectRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetProjectRequest"><span class="badge">M</span>GetProjectRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Label"><span class="badge">M</span>Label</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListProjectsRequest"><span class="badge">M</span>ListProjectsRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListProjectsResponse"><span class="badge">M</span>ListProjectsResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Project"><span class="badge">M</span>Project</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Project.ExecutionRetryPolicy"><span class="badge">M</span>Project.ExecutionRetryPolicy</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Project.LabelsEntry"><span class="badge">M</span>Project.LabelsEntry</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.RemoveWebhookRequest"><span class="badge">M</span>RemoveWebhookRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SearchProjectsRequest"><span class="badge">M</span>SearchProjectsRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SearchProjectsResponse"><span class="badge">M</span>SearchProjectsResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TestWebhookRequest"><span class="badge">M</span>TestWebhookRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TestWebhookResponse"><span class="badge">M</span>TestWebhookResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UndeleteProjectRequest"><span class="badge">M</span>UndeleteProjectRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UpdateProjectRequest"><span class="badge">M</span>UpdateProjectRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UpdateWebhookRequest"><span class="badge">M</span>UpdateWebhookRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Webhook"><span class="badge">M</span>Webhook</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.Activity.Type"><span class="badge">E</span>Activity.Type</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Webhook.Type"><span class="badge">E</span>Webhook.Type</a>
                </li>
              
              
              
                <li>
                  <a href="#bytebase.v1.ProjectService"><span class="badge">S</span>ProjectService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2fsetting_service.proto">v1/setting_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.AISetting"><span class="badge">M</span>AISetting</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Algorithm"><span class="badge">M</span>Algorithm</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Algorithm.FullMask"><span class="badge">M</span>Algorithm.FullMask</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Algorithm.InnerOuterMask"><span class="badge">M</span>Algorithm.InnerOuterMask</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Algorithm.MD5Mask"><span class="badge">M</span>Algorithm.MD5Mask</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Algorithm.RangeMask"><span class="badge">M</span>Algorithm.RangeMask</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Algorithm.RangeMask.Slice"><span class="badge">M</span>Algorithm.RangeMask.Slice</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Announcement"><span class="badge">M</span>Announcement</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.AppIMSetting"><span class="badge">M</span>AppIMSetting</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.AppIMSetting.DingTalk"><span class="badge">M</span>AppIMSetting.DingTalk</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.AppIMSetting.Feishu"><span class="badge">M</span>AppIMSetting.Feishu</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.AppIMSetting.IMSetting"><span class="badge">M</span>AppIMSetting.IMSetting</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.AppIMSetting.Lark"><span class="badge">M</span>AppIMSetting.Lark</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.AppIMSetting.Slack"><span class="badge">M</span>AppIMSetting.Slack</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.AppIMSetting.Teams"><span class="badge">M</span>AppIMSetting.Teams</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.AppIMSetting.Wecom"><span class="badge">M</span>AppIMSetting.Wecom</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DataClassificationSetting"><span class="badge">M</span>DataClassificationSetting</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DataClassificationSetting.DataClassificationConfig"><span class="badge">M</span>DataClassificationSetting.DataClassificationConfig</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DataClassificationSetting.DataClassificationConfig.ClassificationEntry"><span class="badge">M</span>DataClassificationSetting.DataClassificationConfig.ClassificationEntry</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DataClassificationSetting.DataClassificationConfig.DataClassification"><span class="badge">M</span>DataClassificationSetting.DataClassificationConfig.DataClassification</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DataClassificationSetting.DataClassificationConfig.Level"><span class="badge">M</span>DataClassificationSetting.DataClassificationConfig.Level</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.EnvironmentSetting"><span class="badge">M</span>EnvironmentSetting</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.EnvironmentSetting.Environment"><span class="badge">M</span>EnvironmentSetting.Environment</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.EnvironmentSetting.Environment.TagsEntry"><span class="badge">M</span>EnvironmentSetting.Environment.TagsEntry</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetSettingRequest"><span class="badge">M</span>GetSettingRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetSettingResponse"><span class="badge">M</span>GetSettingResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListSettingsRequest"><span class="badge">M</span>ListSettingsRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListSettingsResponse"><span class="badge">M</span>ListSettingsResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SemanticTypeSetting"><span class="badge">M</span>SemanticTypeSetting</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SemanticTypeSetting.SemanticType"><span class="badge">M</span>SemanticTypeSetting.SemanticType</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Setting"><span class="badge">M</span>Setting</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SettingValue"><span class="badge">M</span>SettingValue</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UpdateSettingRequest"><span class="badge">M</span>UpdateSettingRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.WorkspaceApprovalSetting"><span class="badge">M</span>WorkspaceApprovalSetting</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.WorkspaceApprovalSetting.Rule"><span class="badge">M</span>WorkspaceApprovalSetting.Rule</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.WorkspaceProfileSetting"><span class="badge">M</span>WorkspaceProfileSetting</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.WorkspaceProfileSetting.PasswordRestriction"><span class="badge">M</span>WorkspaceProfileSetting.PasswordRestriction</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.AISetting.Provider"><span class="badge">E</span>AISetting.Provider</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Algorithm.InnerOuterMask.MaskType"><span class="badge">E</span>Algorithm.InnerOuterMask.MaskType</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Announcement.AlertLevel"><span class="badge">E</span>Announcement.AlertLevel</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DatabaseChangeMode"><span class="badge">E</span>DatabaseChangeMode</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Setting.SettingName"><span class="badge">E</span>Setting.SettingName</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.WorkspaceApprovalSetting.Rule.Source"><span class="badge">E</span>WorkspaceApprovalSetting.Rule.Source</a>
                </li>
              
              
              
                <li>
                  <a href="#bytebase.v1.SettingService"><span class="badge">S</span>SettingService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2fuser_service.proto">v1/user_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.BatchGetUsersRequest"><span class="badge">M</span>BatchGetUsersRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchGetUsersResponse"><span class="badge">M</span>BatchGetUsersResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.CreateUserRequest"><span class="badge">M</span>CreateUserRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DeleteUserRequest"><span class="badge">M</span>DeleteUserRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetUserRequest"><span class="badge">M</span>GetUserRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListUsersRequest"><span class="badge">M</span>ListUsersRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListUsersResponse"><span class="badge">M</span>ListUsersResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UndeleteUserRequest"><span class="badge">M</span>UndeleteUserRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UpdateUserRequest"><span class="badge">M</span>UpdateUserRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.User"><span class="badge">M</span>User</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.User.Profile"><span class="badge">M</span>User.Profile</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.UserType"><span class="badge">E</span>UserType</a>
                </li>
              
              
              
                <li>
                  <a href="#bytebase.v1.UserService"><span class="badge">S</span>UserService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2factuator_service.proto">v1/actuator_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.ActuatorInfo"><span class="badge">M</span>ActuatorInfo</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ActuatorInfo.StatUser"><span class="badge">M</span>ActuatorInfo.StatUser</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DeleteCacheRequest"><span class="badge">M</span>DeleteCacheRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetActuatorInfoRequest"><span class="badge">M</span>GetActuatorInfoRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetResourcePackageRequest"><span class="badge">M</span>GetResourcePackageRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ResourcePackage"><span class="badge">M</span>ResourcePackage</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SetupSampleRequest"><span class="badge">M</span>SetupSampleRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UpdateActuatorInfoRequest"><span class="badge">M</span>UpdateActuatorInfoRequest</a>
                </li>
              
              
              
              
                <li>
                  <a href="#bytebase.v1.ActuatorService"><span class="badge">S</span>ActuatorService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2faudit_log_service.proto">v1/audit_log_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.AuditData"><span class="badge">M</span>AuditData</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.AuditLog"><span class="badge">M</span>AuditLog</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ExportAuditLogsRequest"><span class="badge">M</span>ExportAuditLogsRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ExportAuditLogsResponse"><span class="badge">M</span>ExportAuditLogsResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.RequestMetadata"><span class="badge">M</span>RequestMetadata</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SearchAuditLogsRequest"><span class="badge">M</span>SearchAuditLogsRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SearchAuditLogsResponse"><span class="badge">M</span>SearchAuditLogsResponse</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.AuditLog.Severity"><span class="badge">E</span>AuditLog.Severity</a>
                </li>
              
              
              
                <li>
                  <a href="#bytebase.v1.AuditLogService"><span class="badge">S</span>AuditLogService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2fauth_service.proto">v1/auth_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.IdentityProviderContext"><span class="badge">M</span>IdentityProviderContext</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.LoginRequest"><span class="badge">M</span>LoginRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.LoginResponse"><span class="badge">M</span>LoginResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.LogoutRequest"><span class="badge">M</span>LogoutRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.OAuth2IdentityProviderContext"><span class="badge">M</span>OAuth2IdentityProviderContext</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.OIDCIdentityProviderContext"><span class="badge">M</span>OIDCIdentityProviderContext</a>
                </li>
              
              
              
              
                <li>
                  <a href="#bytebase.v1.AuthService"><span class="badge">S</span>AuthService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2fcel_service.proto">v1/cel_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.BatchDeparseRequest"><span class="badge">M</span>BatchDeparseRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchDeparseResponse"><span class="badge">M</span>BatchDeparseResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchParseRequest"><span class="badge">M</span>BatchParseRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchParseResponse"><span class="badge">M</span>BatchParseResponse</a>
                </li>
              
              
              
              
                <li>
                  <a href="#bytebase.v1.CelService"><span class="badge">S</span>CelService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2fdatabase_catalog_service.proto">v1/database_catalog_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.ColumnCatalog"><span class="badge">M</span>ColumnCatalog</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ColumnCatalog.LabelsEntry"><span class="badge">M</span>ColumnCatalog.LabelsEntry</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DatabaseCatalog"><span class="badge">M</span>DatabaseCatalog</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetDatabaseCatalogRequest"><span class="badge">M</span>GetDatabaseCatalogRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ObjectSchema"><span class="badge">M</span>ObjectSchema</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ObjectSchema.ArrayKind"><span class="badge">M</span>ObjectSchema.ArrayKind</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ObjectSchema.StructKind"><span class="badge">M</span>ObjectSchema.StructKind</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ObjectSchema.StructKind.PropertiesEntry"><span class="badge">M</span>ObjectSchema.StructKind.PropertiesEntry</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SchemaCatalog"><span class="badge">M</span>SchemaCatalog</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TableCatalog"><span class="badge">M</span>TableCatalog</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TableCatalog.Columns"><span class="badge">M</span>TableCatalog.Columns</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UpdateDatabaseCatalogRequest"><span class="badge">M</span>UpdateDatabaseCatalogRequest</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.ObjectSchema.Type"><span class="badge">E</span>ObjectSchema.Type</a>
                </li>
              
              
              
                <li>
                  <a href="#bytebase.v1.DatabaseCatalogService"><span class="badge">S</span>DatabaseCatalogService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2fdatabase_group_service.proto">v1/database_group_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.CreateDatabaseGroupRequest"><span class="badge">M</span>CreateDatabaseGroupRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DatabaseGroup"><span class="badge">M</span>DatabaseGroup</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DatabaseGroup.Database"><span class="badge">M</span>DatabaseGroup.Database</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DeleteDatabaseGroupRequest"><span class="badge">M</span>DeleteDatabaseGroupRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetDatabaseGroupRequest"><span class="badge">M</span>GetDatabaseGroupRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListDatabaseGroupsRequest"><span class="badge">M</span>ListDatabaseGroupsRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListDatabaseGroupsResponse"><span class="badge">M</span>ListDatabaseGroupsResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UpdateDatabaseGroupRequest"><span class="badge">M</span>UpdateDatabaseGroupRequest</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.DatabaseGroupView"><span class="badge">E</span>DatabaseGroupView</a>
                </li>
              
              
              
                <li>
                  <a href="#bytebase.v1.DatabaseGroupService"><span class="badge">S</span>DatabaseGroupService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2finstance_role_service.proto">v1/instance_role_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.GetInstanceRoleRequest"><span class="badge">M</span>GetInstanceRoleRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.InstanceRole"><span class="badge">M</span>InstanceRole</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListInstanceRolesRequest"><span class="badge">M</span>ListInstanceRolesRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListInstanceRolesResponse"><span class="badge">M</span>ListInstanceRolesResponse</a>
                </li>
              
              
              
              
                <li>
                  <a href="#bytebase.v1.InstanceRoleService"><span class="badge">S</span>InstanceRoleService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2finstance_service.proto">v1/instance_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.AddDataSourceRequest"><span class="badge">M</span>AddDataSourceRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchSyncInstancesRequest"><span class="badge">M</span>BatchSyncInstancesRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchSyncInstancesResponse"><span class="badge">M</span>BatchSyncInstancesResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchUpdateInstancesRequest"><span class="badge">M</span>BatchUpdateInstancesRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchUpdateInstancesResponse"><span class="badge">M</span>BatchUpdateInstancesResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.CreateInstanceRequest"><span class="badge">M</span>CreateInstanceRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DataSource"><span class="badge">M</span>DataSource</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DataSource.AWSCredential"><span class="badge">M</span>DataSource.AWSCredential</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DataSource.Address"><span class="badge">M</span>DataSource.Address</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DataSource.AzureCredential"><span class="badge">M</span>DataSource.AzureCredential</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DataSource.ExtraConnectionParametersEntry"><span class="badge">M</span>DataSource.ExtraConnectionParametersEntry</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DataSource.GCPCredential"><span class="badge">M</span>DataSource.GCPCredential</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DataSourceExternalSecret"><span class="badge">M</span>DataSourceExternalSecret</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DataSourceExternalSecret.AppRoleAuthOption"><span class="badge">M</span>DataSourceExternalSecret.AppRoleAuthOption</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DeleteInstanceRequest"><span class="badge">M</span>DeleteInstanceRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetInstanceRequest"><span class="badge">M</span>GetInstanceRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Instance"><span class="badge">M</span>Instance</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Instance.LabelsEntry"><span class="badge">M</span>Instance.LabelsEntry</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.InstanceResource"><span class="badge">M</span>InstanceResource</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.KerberosConfig"><span class="badge">M</span>KerberosConfig</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListInstanceDatabaseRequest"><span class="badge">M</span>ListInstanceDatabaseRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListInstanceDatabaseResponse"><span class="badge">M</span>ListInstanceDatabaseResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListInstancesRequest"><span class="badge">M</span>ListInstancesRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListInstancesResponse"><span class="badge">M</span>ListInstancesResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.RemoveDataSourceRequest"><span class="badge">M</span>RemoveDataSourceRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SASLConfig"><span class="badge">M</span>SASLConfig</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SyncInstanceRequest"><span class="badge">M</span>SyncInstanceRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SyncInstanceResponse"><span class="badge">M</span>SyncInstanceResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UndeleteInstanceRequest"><span class="badge">M</span>UndeleteInstanceRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UpdateDataSourceRequest"><span class="badge">M</span>UpdateDataSourceRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UpdateInstanceRequest"><span class="badge">M</span>UpdateInstanceRequest</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.DataSource.AuthenticationType"><span class="badge">E</span>DataSource.AuthenticationType</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DataSource.RedisType"><span class="badge">E</span>DataSource.RedisType</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DataSourceExternalSecret.AppRoleAuthOption.SecretType"><span class="badge">E</span>DataSourceExternalSecret.AppRoleAuthOption.SecretType</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DataSourceExternalSecret.AuthType"><span class="badge">E</span>DataSourceExternalSecret.AuthType</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DataSourceExternalSecret.SecretType"><span class="badge">E</span>DataSourceExternalSecret.SecretType</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DataSourceType"><span class="badge">E</span>DataSourceType</a>
                </li>
              
              
              
                <li>
                  <a href="#bytebase.v1.InstanceService"><span class="badge">S</span>InstanceService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2fdatabase_service.proto">v1/database_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.BatchGetDatabasesRequest"><span class="badge">M</span>BatchGetDatabasesRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchGetDatabasesResponse"><span class="badge">M</span>BatchGetDatabasesResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchSyncDatabasesRequest"><span class="badge">M</span>BatchSyncDatabasesRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchSyncDatabasesResponse"><span class="badge">M</span>BatchSyncDatabasesResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchUpdateDatabasesRequest"><span class="badge">M</span>BatchUpdateDatabasesRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchUpdateDatabasesResponse"><span class="badge">M</span>BatchUpdateDatabasesResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BoundingBox"><span class="badge">M</span>BoundingBox</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ChangedResourceDatabase"><span class="badge">M</span>ChangedResourceDatabase</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ChangedResourceFunction"><span class="badge">M</span>ChangedResourceFunction</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ChangedResourceProcedure"><span class="badge">M</span>ChangedResourceProcedure</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ChangedResourceSchema"><span class="badge">M</span>ChangedResourceSchema</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ChangedResourceTable"><span class="badge">M</span>ChangedResourceTable</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ChangedResourceView"><span class="badge">M</span>ChangedResourceView</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ChangedResources"><span class="badge">M</span>ChangedResources</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Changelog"><span class="badge">M</span>Changelog</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.CheckConstraintMetadata"><span class="badge">M</span>CheckConstraintMetadata</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ColumnMetadata"><span class="badge">M</span>ColumnMetadata</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Database"><span class="badge">M</span>Database</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Database.LabelsEntry"><span class="badge">M</span>Database.LabelsEntry</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DatabaseMetadata"><span class="badge">M</span>DatabaseMetadata</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DatabaseSDLSchema"><span class="badge">M</span>DatabaseSDLSchema</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DatabaseSchema"><span class="badge">M</span>DatabaseSchema</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DependencyColumn"><span class="badge">M</span>DependencyColumn</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DependencyTable"><span class="badge">M</span>DependencyTable</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DiffSchemaRequest"><span class="badge">M</span>DiffSchemaRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DiffSchemaResponse"><span class="badge">M</span>DiffSchemaResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DimensionConstraint"><span class="badge">M</span>DimensionConstraint</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DimensionalConfig"><span class="badge">M</span>DimensionalConfig</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.EnumTypeMetadata"><span class="badge">M</span>EnumTypeMetadata</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.EventMetadata"><span class="badge">M</span>EventMetadata</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ExtensionMetadata"><span class="badge">M</span>ExtensionMetadata</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ExternalTableMetadata"><span class="badge">M</span>ExternalTableMetadata</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ForeignKeyMetadata"><span class="badge">M</span>ForeignKeyMetadata</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.FunctionMetadata"><span class="badge">M</span>FunctionMetadata</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GenerationMetadata"><span class="badge">M</span>GenerationMetadata</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetChangelogRequest"><span class="badge">M</span>GetChangelogRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetDatabaseMetadataRequest"><span class="badge">M</span>GetDatabaseMetadataRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetDatabaseRequest"><span class="badge">M</span>GetDatabaseRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetDatabaseSDLSchemaRequest"><span class="badge">M</span>GetDatabaseSDLSchemaRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetDatabaseSchemaRequest"><span class="badge">M</span>GetDatabaseSchemaRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetSchemaStringRequest"><span class="badge">M</span>GetSchemaStringRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetSchemaStringResponse"><span class="badge">M</span>GetSchemaStringResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GridLevel"><span class="badge">M</span>GridLevel</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.IndexMetadata"><span class="badge">M</span>IndexMetadata</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListChangelogsRequest"><span class="badge">M</span>ListChangelogsRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListChangelogsResponse"><span class="badge">M</span>ListChangelogsResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListDatabasesRequest"><span class="badge">M</span>ListDatabasesRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListDatabasesResponse"><span class="badge">M</span>ListDatabasesResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.MaterializedViewMetadata"><span class="badge">M</span>MaterializedViewMetadata</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.PackageMetadata"><span class="badge">M</span>PackageMetadata</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ProcedureMetadata"><span class="badge">M</span>ProcedureMetadata</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SchemaMetadata"><span class="badge">M</span>SchemaMetadata</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SequenceMetadata"><span class="badge">M</span>SequenceMetadata</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SpatialIndexConfig"><span class="badge">M</span>SpatialIndexConfig</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.StorageConfig"><span class="badge">M</span>StorageConfig</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.StreamMetadata"><span class="badge">M</span>StreamMetadata</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SyncDatabaseRequest"><span class="badge">M</span>SyncDatabaseRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SyncDatabaseResponse"><span class="badge">M</span>SyncDatabaseResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TableMetadata"><span class="badge">M</span>TableMetadata</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TablePartitionMetadata"><span class="badge">M</span>TablePartitionMetadata</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskMetadata"><span class="badge">M</span>TaskMetadata</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TessellationConfig"><span class="badge">M</span>TessellationConfig</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TriggerMetadata"><span class="badge">M</span>TriggerMetadata</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UpdateDatabaseRequest"><span class="badge">M</span>UpdateDatabaseRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ViewMetadata"><span class="badge">M</span>ViewMetadata</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.Changelog.Status"><span class="badge">E</span>Changelog.Status</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Changelog.Type"><span class="badge">E</span>Changelog.Type</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ChangelogView"><span class="badge">E</span>ChangelogView</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ColumnMetadata.IdentityGeneration"><span class="badge">E</span>ColumnMetadata.IdentityGeneration</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GenerationMetadata.Type"><span class="badge">E</span>GenerationMetadata.Type</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetDatabaseSDLSchemaRequest.SDLFormat"><span class="badge">E</span>GetDatabaseSDLSchemaRequest.SDLFormat</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetSchemaStringRequest.ObjectType"><span class="badge">E</span>GetSchemaStringRequest.ObjectType</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.StreamMetadata.Mode"><span class="badge">E</span>StreamMetadata.Mode</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.StreamMetadata.Type"><span class="badge">E</span>StreamMetadata.Type</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TablePartitionMetadata.Type"><span class="badge">E</span>TablePartitionMetadata.Type</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskMetadata.State"><span class="badge">E</span>TaskMetadata.State</a>
                </li>
              
              
              
                <li>
                  <a href="#bytebase.v1.DatabaseService"><span class="badge">S</span>DatabaseService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2fgroup_service.proto">v1/group_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.BatchGetGroupsRequest"><span class="badge">M</span>BatchGetGroupsRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchGetGroupsResponse"><span class="badge">M</span>BatchGetGroupsResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.CreateGroupRequest"><span class="badge">M</span>CreateGroupRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DeleteGroupRequest"><span class="badge">M</span>DeleteGroupRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetGroupRequest"><span class="badge">M</span>GetGroupRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Group"><span class="badge">M</span>Group</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GroupMember"><span class="badge">M</span>GroupMember</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListGroupsRequest"><span class="badge">M</span>ListGroupsRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListGroupsResponse"><span class="badge">M</span>ListGroupsResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UpdateGroupRequest"><span class="badge">M</span>UpdateGroupRequest</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.GroupMember.Role"><span class="badge">E</span>GroupMember.Role</a>
                </li>
              
              
              
                <li>
                  <a href="#bytebase.v1.GroupService"><span class="badge">S</span>GroupService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2fidp_service.proto">v1/idp_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.CreateIdentityProviderRequest"><span class="badge">M</span>CreateIdentityProviderRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DeleteIdentityProviderRequest"><span class="badge">M</span>DeleteIdentityProviderRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.FieldMapping"><span class="badge">M</span>FieldMapping</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetIdentityProviderRequest"><span class="badge">M</span>GetIdentityProviderRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.IdentityProvider"><span class="badge">M</span>IdentityProvider</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.IdentityProviderConfig"><span class="badge">M</span>IdentityProviderConfig</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.LDAPIdentityProviderConfig"><span class="badge">M</span>LDAPIdentityProviderConfig</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListIdentityProvidersRequest"><span class="badge">M</span>ListIdentityProvidersRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListIdentityProvidersResponse"><span class="badge">M</span>ListIdentityProvidersResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.OAuth2IdentityProviderConfig"><span class="badge">M</span>OAuth2IdentityProviderConfig</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.OAuth2IdentityProviderTestRequestContext"><span class="badge">M</span>OAuth2IdentityProviderTestRequestContext</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.OIDCIdentityProviderConfig"><span class="badge">M</span>OIDCIdentityProviderConfig</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.OIDCIdentityProviderTestRequestContext"><span class="badge">M</span>OIDCIdentityProviderTestRequestContext</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TestIdentityProviderRequest"><span class="badge">M</span>TestIdentityProviderRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TestIdentityProviderResponse"><span class="badge">M</span>TestIdentityProviderResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TestIdentityProviderResponse.ClaimsEntry"><span class="badge">M</span>TestIdentityProviderResponse.ClaimsEntry</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TestIdentityProviderResponse.UserInfoEntry"><span class="badge">M</span>TestIdentityProviderResponse.UserInfoEntry</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UpdateIdentityProviderRequest"><span class="badge">M</span>UpdateIdentityProviderRequest</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.IdentityProviderType"><span class="badge">E</span>IdentityProviderType</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.LDAPIdentityProviderConfig.SecurityProtocol"><span class="badge">E</span>LDAPIdentityProviderConfig.SecurityProtocol</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.OAuth2AuthStyle"><span class="badge">E</span>OAuth2AuthStyle</a>
                </li>
              
              
              
                <li>
                  <a href="#bytebase.v1.IdentityProviderService"><span class="badge">S</span>IdentityProviderService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2forg_policy_service.proto">v1/org_policy_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.CreatePolicyRequest"><span class="badge">M</span>CreatePolicyRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DataSourceQueryPolicy"><span class="badge">M</span>DataSourceQueryPolicy</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DeletePolicyRequest"><span class="badge">M</span>DeletePolicyRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetPolicyRequest"><span class="badge">M</span>GetPolicyRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListPoliciesRequest"><span class="badge">M</span>ListPoliciesRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListPoliciesResponse"><span class="badge">M</span>ListPoliciesResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.MaskingExceptionPolicy"><span class="badge">M</span>MaskingExceptionPolicy</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.MaskingExceptionPolicy.MaskingException"><span class="badge">M</span>MaskingExceptionPolicy.MaskingException</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.MaskingRulePolicy"><span class="badge">M</span>MaskingRulePolicy</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.MaskingRulePolicy.MaskingRule"><span class="badge">M</span>MaskingRulePolicy.MaskingRule</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Policy"><span class="badge">M</span>Policy</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.QueryDataPolicy"><span class="badge">M</span>QueryDataPolicy</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.RolloutPolicy"><span class="badge">M</span>RolloutPolicy</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.RolloutPolicy.Checkers"><span class="badge">M</span>RolloutPolicy.Checkers</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.RolloutPolicy.Checkers.RequiredStatusChecks"><span class="badge">M</span>RolloutPolicy.Checkers.RequiredStatusChecks</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TagPolicy"><span class="badge">M</span>TagPolicy</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TagPolicy.TagsEntry"><span class="badge">M</span>TagPolicy.TagsEntry</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UpdatePolicyRequest"><span class="badge">M</span>UpdatePolicyRequest</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.DataSourceQueryPolicy.Restriction"><span class="badge">E</span>DataSourceQueryPolicy.Restriction</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.MaskingExceptionPolicy.MaskingException.Action"><span class="badge">E</span>MaskingExceptionPolicy.MaskingException.Action</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.PolicyResourceType"><span class="badge">E</span>PolicyResourceType</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.PolicyType"><span class="badge">E</span>PolicyType</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.RolloutPolicy.Checkers.PlanCheckEnforcement"><span class="badge">E</span>RolloutPolicy.Checkers.PlanCheckEnforcement</a>
                </li>
              
              
              
                <li>
                  <a href="#bytebase.v1.OrgPolicyService"><span class="badge">S</span>OrgPolicyService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2fsql_service.proto">v1/sql_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.AICompletionRequest"><span class="badge">M</span>AICompletionRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.AICompletionRequest.Message"><span class="badge">M</span>AICompletionRequest.Message</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.AICompletionResponse"><span class="badge">M</span>AICompletionResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.AICompletionResponse.Candidate"><span class="badge">M</span>AICompletionResponse.Candidate</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.AICompletionResponse.Candidate.Content"><span class="badge">M</span>AICompletionResponse.Candidate.Content</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.AICompletionResponse.Candidate.Content.Part"><span class="badge">M</span>AICompletionResponse.Candidate.Content.Part</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.AdminExecuteRequest"><span class="badge">M</span>AdminExecuteRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.AdminExecuteResponse"><span class="badge">M</span>AdminExecuteResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Advice"><span class="badge">M</span>Advice</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DiffMetadataRequest"><span class="badge">M</span>DiffMetadataRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DiffMetadataResponse"><span class="badge">M</span>DiffMetadataResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ExportRequest"><span class="badge">M</span>ExportRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ExportResponse"><span class="badge">M</span>ExportResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.MaskingReason"><span class="badge">M</span>MaskingReason</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.QueryHistory"><span class="badge">M</span>QueryHistory</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.QueryOption"><span class="badge">M</span>QueryOption</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.QueryRequest"><span class="badge">M</span>QueryRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.QueryResponse"><span class="badge">M</span>QueryResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.QueryResult"><span class="badge">M</span>QueryResult</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.QueryResult.Message"><span class="badge">M</span>QueryResult.Message</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.QueryResult.PermissionDenied"><span class="badge">M</span>QueryResult.PermissionDenied</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.QueryResult.PostgresError"><span class="badge">M</span>QueryResult.PostgresError</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.QueryResult.SyntaxError"><span class="badge">M</span>QueryResult.SyntaxError</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.QueryRow"><span class="badge">M</span>QueryRow</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.RowValue"><span class="badge">M</span>RowValue</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.RowValue.Timestamp"><span class="badge">M</span>RowValue.Timestamp</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.RowValue.TimestampTZ"><span class="badge">M</span>RowValue.TimestampTZ</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SearchQueryHistoriesRequest"><span class="badge">M</span>SearchQueryHistoriesRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SearchQueryHistoriesResponse"><span class="badge">M</span>SearchQueryHistoriesResponse</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.Advice.Level"><span class="badge">E</span>Advice.Level</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Advice.RuleType"><span class="badge">E</span>Advice.RuleType</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.QueryHistory.Type"><span class="badge">E</span>QueryHistory.Type</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.QueryOption.MSSQLExplainFormat"><span class="badge">E</span>QueryOption.MSSQLExplainFormat</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.QueryOption.RedisRunCommandsOn"><span class="badge">E</span>QueryOption.RedisRunCommandsOn</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.QueryResult.Message.Level"><span class="badge">E</span>QueryResult.Message.Level</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.QueryResult.PermissionDenied.CommandType"><span class="badge">E</span>QueryResult.PermissionDenied.CommandType</a>
                </li>
              
              
              
                <li>
                  <a href="#bytebase.v1.SQLService"><span class="badge">S</span>SQLService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2fplan_service.proto">v1/plan_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.BatchCancelPlanCheckRunsRequest"><span class="badge">M</span>BatchCancelPlanCheckRunsRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchCancelPlanCheckRunsResponse"><span class="badge">M</span>BatchCancelPlanCheckRunsResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.CreatePlanRequest"><span class="badge">M</span>CreatePlanRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetPlanRequest"><span class="badge">M</span>GetPlanRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListPlanCheckRunsRequest"><span class="badge">M</span>ListPlanCheckRunsRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListPlanCheckRunsResponse"><span class="badge">M</span>ListPlanCheckRunsResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListPlansRequest"><span class="badge">M</span>ListPlansRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListPlansResponse"><span class="badge">M</span>ListPlansResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Plan"><span class="badge">M</span>Plan</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Plan.ChangeDatabaseConfig"><span class="badge">M</span>Plan.ChangeDatabaseConfig</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Plan.ChangeDatabaseConfig.GhostFlagsEntry"><span class="badge">M</span>Plan.ChangeDatabaseConfig.GhostFlagsEntry</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Plan.CreateDatabaseConfig"><span class="badge">M</span>Plan.CreateDatabaseConfig</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Plan.Deployment"><span class="badge">M</span>Plan.Deployment</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Plan.Deployment.DatabaseGroupMapping"><span class="badge">M</span>Plan.Deployment.DatabaseGroupMapping</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Plan.ExportDataConfig"><span class="badge">M</span>Plan.ExportDataConfig</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Plan.PlanCheckRunStatusCountEntry"><span class="badge">M</span>Plan.PlanCheckRunStatusCountEntry</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Plan.Spec"><span class="badge">M</span>Plan.Spec</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.PlanCheckRun"><span class="badge">M</span>PlanCheckRun</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.PlanCheckRun.Result"><span class="badge">M</span>PlanCheckRun.Result</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.PlanCheckRun.Result.SqlReviewReport"><span class="badge">M</span>PlanCheckRun.Result.SqlReviewReport</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.PlanCheckRun.Result.SqlSummaryReport"><span class="badge">M</span>PlanCheckRun.Result.SqlSummaryReport</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.RunPlanChecksRequest"><span class="badge">M</span>RunPlanChecksRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.RunPlanChecksResponse"><span class="badge">M</span>RunPlanChecksResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SearchPlansRequest"><span class="badge">M</span>SearchPlansRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SearchPlansResponse"><span class="badge">M</span>SearchPlansResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UpdatePlanRequest"><span class="badge">M</span>UpdatePlanRequest</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.PlanCheckRun.Status"><span class="badge">E</span>PlanCheckRun.Status</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.PlanCheckRun.Type"><span class="badge">E</span>PlanCheckRun.Type</a>
                </li>
              
              
              
                <li>
                  <a href="#bytebase.v1.PlanService"><span class="badge">S</span>PlanService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2frelease_service.proto">v1/release_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.CheckReleaseRequest"><span class="badge">M</span>CheckReleaseRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.CheckReleaseResponse"><span class="badge">M</span>CheckReleaseResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.CheckReleaseResponse.CheckResult"><span class="badge">M</span>CheckReleaseResponse.CheckResult</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.CreateReleaseRequest"><span class="badge">M</span>CreateReleaseRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DeleteReleaseRequest"><span class="badge">M</span>DeleteReleaseRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetReleaseRequest"><span class="badge">M</span>GetReleaseRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListReleasesRequest"><span class="badge">M</span>ListReleasesRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListReleasesResponse"><span class="badge">M</span>ListReleasesResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Release"><span class="badge">M</span>Release</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Release.File"><span class="badge">M</span>Release.File</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Release.VCSSource"><span class="badge">M</span>Release.VCSSource</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SearchReleasesRequest"><span class="badge">M</span>SearchReleasesRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SearchReleasesResponse"><span class="badge">M</span>SearchReleasesResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UndeleteReleaseRequest"><span class="badge">M</span>UndeleteReleaseRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UpdateReleaseRequest"><span class="badge">M</span>UpdateReleaseRequest</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.Release.File.Type"><span class="badge">E</span>Release.File.Type</a>
                </li>
              
              
              
                <li>
                  <a href="#bytebase.v1.ReleaseService"><span class="badge">S</span>ReleaseService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2freview_config_service.proto">v1/review_config_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.CreateReviewConfigRequest"><span class="badge">M</span>CreateReviewConfigRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DeleteReviewConfigRequest"><span class="badge">M</span>DeleteReviewConfigRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetReviewConfigRequest"><span class="badge">M</span>GetReviewConfigRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListReviewConfigsRequest"><span class="badge">M</span>ListReviewConfigsRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListReviewConfigsResponse"><span class="badge">M</span>ListReviewConfigsResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ReviewConfig"><span class="badge">M</span>ReviewConfig</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SQLReviewRule"><span class="badge">M</span>SQLReviewRule</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UpdateReviewConfigRequest"><span class="badge">M</span>UpdateReviewConfigRequest</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.SQLReviewRule.Level"><span class="badge">E</span>SQLReviewRule.Level</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SQLReviewRule.Type"><span class="badge">E</span>SQLReviewRule.Type</a>
                </li>
              
              
              
                <li>
                  <a href="#bytebase.v1.ReviewConfigService"><span class="badge">S</span>ReviewConfigService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2frevision_service.proto">v1/revision_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.BatchCreateRevisionsRequest"><span class="badge">M</span>BatchCreateRevisionsRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchCreateRevisionsResponse"><span class="badge">M</span>BatchCreateRevisionsResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.CreateRevisionRequest"><span class="badge">M</span>CreateRevisionRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DeleteRevisionRequest"><span class="badge">M</span>DeleteRevisionRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetRevisionRequest"><span class="badge">M</span>GetRevisionRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListRevisionsRequest"><span class="badge">M</span>ListRevisionsRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListRevisionsResponse"><span class="badge">M</span>ListRevisionsResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Revision"><span class="badge">M</span>Revision</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.Revision.Type"><span class="badge">E</span>Revision.Type</a>
                </li>
              
              
              
                <li>
                  <a href="#bytebase.v1.RevisionService"><span class="badge">S</span>RevisionService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2frole_service.proto">v1/role_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.CreateRoleRequest"><span class="badge">M</span>CreateRoleRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DeleteRoleRequest"><span class="badge">M</span>DeleteRoleRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetRoleRequest"><span class="badge">M</span>GetRoleRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListRolesRequest"><span class="badge">M</span>ListRolesRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListRolesResponse"><span class="badge">M</span>ListRolesResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Role"><span class="badge">M</span>Role</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UpdateRoleRequest"><span class="badge">M</span>UpdateRoleRequest</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.Role.Type"><span class="badge">E</span>Role.Type</a>
                </li>
              
              
              
                <li>
                  <a href="#bytebase.v1.RoleService"><span class="badge">S</span>RoleService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2frollout_service.proto">v1/rollout_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.BatchCancelTaskRunsRequest"><span class="badge">M</span>BatchCancelTaskRunsRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchCancelTaskRunsResponse"><span class="badge">M</span>BatchCancelTaskRunsResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchRunTasksRequest"><span class="badge">M</span>BatchRunTasksRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchRunTasksResponse"><span class="badge">M</span>BatchRunTasksResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchSkipTasksRequest"><span class="badge">M</span>BatchSkipTasksRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchSkipTasksResponse"><span class="badge">M</span>BatchSkipTasksResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.CreateRolloutRequest"><span class="badge">M</span>CreateRolloutRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetRolloutRequest"><span class="badge">M</span>GetRolloutRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetTaskRunLogRequest"><span class="badge">M</span>GetTaskRunLogRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetTaskRunRequest"><span class="badge">M</span>GetTaskRunRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetTaskRunSessionRequest"><span class="badge">M</span>GetTaskRunSessionRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListRolloutsRequest"><span class="badge">M</span>ListRolloutsRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListRolloutsResponse"><span class="badge">M</span>ListRolloutsResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListTaskRunsRequest"><span class="badge">M</span>ListTaskRunsRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.ListTaskRunsResponse"><span class="badge">M</span>ListTaskRunsResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.PreviewRolloutRequest"><span class="badge">M</span>PreviewRolloutRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.PreviewTaskRunRollbackRequest"><span class="badge">M</span>PreviewTaskRunRollbackRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.PreviewTaskRunRollbackResponse"><span class="badge">M</span>PreviewTaskRunRollbackResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Rollout"><span class="badge">M</span>Rollout</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Stage"><span class="badge">M</span>Stage</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Task"><span class="badge">M</span>Task</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Task.DatabaseCreate"><span class="badge">M</span>Task.DatabaseCreate</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Task.DatabaseDataExport"><span class="badge">M</span>Task.DatabaseDataExport</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Task.DatabaseUpdate"><span class="badge">M</span>Task.DatabaseUpdate</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRun"><span class="badge">M</span>TaskRun</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRun.PriorBackupDetail"><span class="badge">M</span>TaskRun.PriorBackupDetail</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRun.PriorBackupDetail.Item"><span class="badge">M</span>TaskRun.PriorBackupDetail.Item</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRun.PriorBackupDetail.Item.Table"><span class="badge">M</span>TaskRun.PriorBackupDetail.Item.Table</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRun.SchedulerInfo"><span class="badge">M</span>TaskRun.SchedulerInfo</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRun.SchedulerInfo.WaitingCause"><span class="badge">M</span>TaskRun.SchedulerInfo.WaitingCause</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRun.SchedulerInfo.WaitingCause.Task"><span class="badge">M</span>TaskRun.SchedulerInfo.WaitingCause.Task</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRunLog"><span class="badge">M</span>TaskRunLog</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRunLogEntry"><span class="badge">M</span>TaskRunLogEntry</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRunLogEntry.CommandExecute"><span class="badge">M</span>TaskRunLogEntry.CommandExecute</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRunLogEntry.CommandExecute.CommandResponse"><span class="badge">M</span>TaskRunLogEntry.CommandExecute.CommandResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRunLogEntry.ComputeDiff"><span class="badge">M</span>TaskRunLogEntry.ComputeDiff</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRunLogEntry.DatabaseSync"><span class="badge">M</span>TaskRunLogEntry.DatabaseSync</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRunLogEntry.PriorBackup"><span class="badge">M</span>TaskRunLogEntry.PriorBackup</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRunLogEntry.RetryInfo"><span class="badge">M</span>TaskRunLogEntry.RetryInfo</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRunLogEntry.SchemaDump"><span class="badge">M</span>TaskRunLogEntry.SchemaDump</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRunLogEntry.TaskRunStatusUpdate"><span class="badge">M</span>TaskRunLogEntry.TaskRunStatusUpdate</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRunLogEntry.TransactionControl"><span class="badge">M</span>TaskRunLogEntry.TransactionControl</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRunSession"><span class="badge">M</span>TaskRunSession</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRunSession.Postgres"><span class="badge">M</span>TaskRunSession.Postgres</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRunSession.Postgres.Session"><span class="badge">M</span>TaskRunSession.Postgres.Session</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.Task.Status"><span class="badge">E</span>Task.Status</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Task.Type"><span class="badge">E</span>Task.Type</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRun.ExportArchiveStatus"><span class="badge">E</span>TaskRun.ExportArchiveStatus</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRun.Status"><span class="badge">E</span>TaskRun.Status</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRunLogEntry.TaskRunStatusUpdate.Status"><span class="badge">E</span>TaskRunLogEntry.TaskRunStatusUpdate.Status</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRunLogEntry.TransactionControl.Type"><span class="badge">E</span>TaskRunLogEntry.TransactionControl.Type</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.TaskRunLogEntry.Type"><span class="badge">E</span>TaskRunLogEntry.Type</a>
                </li>
              
              
              
                <li>
                  <a href="#bytebase.v1.RolloutService"><span class="badge">S</span>RolloutService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2fsheet_service.proto">v1/sheet_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.BatchCreateSheetsRequest"><span class="badge">M</span>BatchCreateSheetsRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchCreateSheetsResponse"><span class="badge">M</span>BatchCreateSheetsResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.CreateSheetRequest"><span class="badge">M</span>CreateSheetRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetSheetRequest"><span class="badge">M</span>GetSheetRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Sheet"><span class="badge">M</span>Sheet</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SheetCommand"><span class="badge">M</span>SheetCommand</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SheetPayload"><span class="badge">M</span>SheetPayload</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UpdateSheetRequest"><span class="badge">M</span>UpdateSheetRequest</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.SheetPayload.Type"><span class="badge">E</span>SheetPayload.Type</a>
                </li>
              
              
              
                <li>
                  <a href="#bytebase.v1.SheetService"><span class="badge">S</span>SheetService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2fsubscription_service.proto">v1/subscription_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.GetSubscriptionRequest"><span class="badge">M</span>GetSubscriptionRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.PlanConfig"><span class="badge">M</span>PlanConfig</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.PlanLimitConfig"><span class="badge">M</span>PlanLimitConfig</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Subscription"><span class="badge">M</span>Subscription</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UpdateSubscriptionRequest"><span class="badge">M</span>UpdateSubscriptionRequest</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.PlanFeature"><span class="badge">E</span>PlanFeature</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.PlanType"><span class="badge">E</span>PlanType</a>
                </li>
              
              
              
                <li>
                  <a href="#bytebase.v1.SubscriptionService"><span class="badge">S</span>SubscriptionService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2fworksheet_service.proto">v1/worksheet_service.proto</a>
            <ul>
              
                <li>
                  <a href="#bytebase.v1.BatchUpdateWorksheetOrganizerRequest"><span class="badge">M</span>BatchUpdateWorksheetOrganizerRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.BatchUpdateWorksheetOrganizerResponse"><span class="badge">M</span>BatchUpdateWorksheetOrganizerResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.CreateWorksheetRequest"><span class="badge">M</span>CreateWorksheetRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.DeleteWorksheetRequest"><span class="badge">M</span>DeleteWorksheetRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.GetWorksheetRequest"><span class="badge">M</span>GetWorksheetRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SearchWorksheetsRequest"><span class="badge">M</span>SearchWorksheetsRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.SearchWorksheetsResponse"><span class="badge">M</span>SearchWorksheetsResponse</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UpdateWorksheetOrganizerRequest"><span class="badge">M</span>UpdateWorksheetOrganizerRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.UpdateWorksheetRequest"><span class="badge">M</span>UpdateWorksheetRequest</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.Worksheet"><span class="badge">M</span>Worksheet</a>
                </li>
              
                <li>
                  <a href="#bytebase.v1.WorksheetOrganizer"><span class="badge">M</span>WorksheetOrganizer</a>
                </li>
              
              
                <li>
                  <a href="#bytebase.v1.Worksheet.Visibility"><span class="badge">E</span>Worksheet.Visibility</a>
                </li>
              
              
              
                <li>
                  <a href="#bytebase.v1.WorksheetService"><span class="badge">S</span>WorksheetService</a>
                </li>
              
            </ul>
          </li>
        
          
          <li>
            <a href="#v1%2fworkspace_service.proto">v1/workspace_service.proto</a>
            <ul>
              
              
              
              
                <li>
                  <a href="#bytebase.v1.WorkspaceService"><span class="badge">S</span>WorkspaceService</a>
                </li>
              
            </ul>
          </li>
        
        <li><a href="#scalar-value-types">Scalar Value Types</a></li>
      </ul>
    </div>

    
      
      <div class="file-heading">
        <h2 id="v1/annotation.proto">v1/annotation.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      

      
        <h3 id="bytebase.v1.AuthMethod">AuthMethod</h3>
        <p>Authorization method for RPC calls.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>AUTH_METHOD_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified authorization method.</p></td>
              </tr>
            
              <tr>
                <td>IAM</td>
                <td>1</td>
                <td><p>Standard IAM authorization check on organizational resources.</p></td>
              </tr>
            
              <tr>
                <td>CUSTOM</td>
                <td>2</td>
                <td><p>Custom authorization logic.</p></td>
              </tr>
            
          </tbody>
        </table>
      

      
        <h3 id="v1/annotation.proto-extensions">File-level Extensions</h3>
        <table class="extension-table">
          <thead>
            <tr><td>Extension</td><td>Type</td><td>Base</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>allow_without_credential</td>
                <td><a href="#bool">bool</a></td>
                <td><a href="#google.protobuf.MethodOptions">.google.protobuf.MethodOptions</a></td>
                <td>100000</td>
                <td><p>Whether the method allows access without authentication credentials.</p></td>
              </tr>
            
              <tr>
                <td>audit</td>
                <td><a href="#bool">bool</a></td>
                <td><a href="#google.protobuf.MethodOptions">.google.protobuf.MethodOptions</a></td>
                <td>100003</td>
                <td><p>Whether to audit calls to this method.</p></td>
              </tr>
            
              <tr>
                <td>auth_method</td>
                <td><a href="#bytebase.v1.AuthMethod">AuthMethod</a></td>
                <td><a href="#google.protobuf.MethodOptions">.google.protobuf.MethodOptions</a></td>
                <td>100002</td>
                <td><p>The authorization method to use for this RPC.</p></td>
              </tr>
            
              <tr>
                <td>permission</td>
                <td><a href="#string">string</a></td>
                <td><a href="#google.protobuf.MethodOptions">.google.protobuf.MethodOptions</a></td>
                <td>100001</td>
                <td><p>The permission required to call this method.</p></td>
              </tr>
            
          </tbody>
        </table>
      

      
    
      
      <div class="file-heading">
        <h2 id="v1/common.proto">v1/common.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.Position">Position</h3>
        <p>Position in a text expressed as one-based line and one-based column.</p><p>We use 1-based numbering to match the majority of industry standards:</p><p>- Monaco Editor uses 1-based (https://microsoft.github.io/monaco-editor/typedoc/interfaces/IPosition.html)</p><p>- GitHub Actions uses 1-based (https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#setting-an-error-message)</p><p>- Most text editors display 1-based positions to users</p><p>Note: LSP uses 0-based (https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#position),</p><p>but we follow the canonical user-facing standards.</p><p>Handling unknown positions:</p><p>- If the entire position is unknown, leave this field as nil/undefined</p><p>- If only line is known, set line and leave column as 0 (e.g., line=5, column=0)</p><p>- If only column is known (rare), set column and leave line as 0</p><p>Frontends should check for nil/undefined/zero values and handle them appropriately.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>line</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>Line position in a text (one-based).
First line of the text is line 1.
A value of 0 indicates the line information is unknown. </p></td>
                </tr>
              
                <tr>
                  <td>column</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>Column position in a text (one-based).
Column is measured in Unicode code points (characters/runes), not bytes or grapheme clusters.
First character of the line is column 1.
A value of 0 indicates the column information is unknown.

Examples:
- &#34;SELECT * FROM t&#34; - column 8 is &#39;*&#39;
- &#34;SELECT 你好 FROM t&#34; - column 8 is &#39;你&#39; (even though it&#39;s at byte offset 7)
- &#34;SELECT 😀 FROM t&#34; - column 8 is &#39;😀&#39; (even though it&#39;s 4 bytes in UTF-8) </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Range">Range</h3>
        <p>Range of positions in text or sequence.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>start</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>Start position (inclusive). </p></td>
                </tr>
              
                <tr>
                  <td>end</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>End position (exclusive). </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.DatabaseChangeType">DatabaseChangeType</h3>
        <p>DatabaseChangeType is the database change type.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>DATABASE_CHANGE_TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>MIGRATE</td>
                <td>2</td>
                <td><p>Used for imperative schema migration including CREATE DATABASE.</p></td>
              </tr>
            
              <tr>
                <td>SDL</td>
                <td>3</td>
                <td><p>Used for state-based declarative schema migration including CREATE DATABASE.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.Engine">Engine</h3>
        <p>Database engine type.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>ENGINE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified database engine.</p></td>
              </tr>
            
              <tr>
                <td>CLICKHOUSE</td>
                <td>1</td>
                <td><p>ClickHouse columnar database.</p></td>
              </tr>
            
              <tr>
                <td>MYSQL</td>
                <td>2</td>
                <td><p>MySQL relational database.</p></td>
              </tr>
            
              <tr>
                <td>POSTGRES</td>
                <td>3</td>
                <td><p>PostgreSQL relational database.</p></td>
              </tr>
            
              <tr>
                <td>SNOWFLAKE</td>
                <td>4</td>
                <td><p>Snowflake cloud data warehouse.</p></td>
              </tr>
            
              <tr>
                <td>SQLITE</td>
                <td>5</td>
                <td><p>SQLite embedded database.</p></td>
              </tr>
            
              <tr>
                <td>TIDB</td>
                <td>6</td>
                <td><p>TiDB distributed SQL database.</p></td>
              </tr>
            
              <tr>
                <td>MONGODB</td>
                <td>7</td>
                <td><p>MongoDB document database.</p></td>
              </tr>
            
              <tr>
                <td>REDIS</td>
                <td>8</td>
                <td><p>Redis key-value store.</p></td>
              </tr>
            
              <tr>
                <td>ORACLE</td>
                <td>9</td>
                <td><p>Oracle relational database.</p></td>
              </tr>
            
              <tr>
                <td>SPANNER</td>
                <td>10</td>
                <td><p>Google Cloud Spanner distributed database.</p></td>
              </tr>
            
              <tr>
                <td>MSSQL</td>
                <td>11</td>
                <td><p>Microsoft SQL Server relational database.</p></td>
              </tr>
            
              <tr>
                <td>REDSHIFT</td>
                <td>12</td>
                <td><p>Amazon Redshift data warehouse.</p></td>
              </tr>
            
              <tr>
                <td>MARIADB</td>
                <td>13</td>
                <td><p>MariaDB relational database.</p></td>
              </tr>
            
              <tr>
                <td>OCEANBASE</td>
                <td>14</td>
                <td><p>OceanBase distributed database.</p></td>
              </tr>
            
              <tr>
                <td>STARROCKS</td>
                <td>18</td>
                <td><p>StarRocks analytics database.</p></td>
              </tr>
            
              <tr>
                <td>DORIS</td>
                <td>19</td>
                <td><p>Apache Doris analytics database.</p></td>
              </tr>
            
              <tr>
                <td>HIVE</td>
                <td>20</td>
                <td><p>Apache Hive data warehouse.</p></td>
              </tr>
            
              <tr>
                <td>ELASTICSEARCH</td>
                <td>21</td>
                <td><p>Elasticsearch search engine.</p></td>
              </tr>
            
              <tr>
                <td>BIGQUERY</td>
                <td>22</td>
                <td><p>Google BigQuery data warehouse.</p></td>
              </tr>
            
              <tr>
                <td>DYNAMODB</td>
                <td>23</td>
                <td><p>Amazon DynamoDB NoSQL database.</p></td>
              </tr>
            
              <tr>
                <td>DATABRICKS</td>
                <td>24</td>
                <td><p>Databricks lakehouse platform.</p></td>
              </tr>
            
              <tr>
                <td>COCKROACHDB</td>
                <td>25</td>
                <td><p>CockroachDB distributed SQL database.</p></td>
              </tr>
            
              <tr>
                <td>COSMOSDB</td>
                <td>26</td>
                <td><p>Azure Cosmos DB multi-model database.</p></td>
              </tr>
            
              <tr>
                <td>TRINO</td>
                <td>27</td>
                <td><p>Trino distributed SQL query engine.</p></td>
              </tr>
            
              <tr>
                <td>CASSANDRA</td>
                <td>28</td>
                <td><p>Apache Cassandra NoSQL database.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.ExportFormat">ExportFormat</h3>
        <p>Data export format.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>FORMAT_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified export format.</p></td>
              </tr>
            
              <tr>
                <td>CSV</td>
                <td>1</td>
                <td><p>Comma-separated values format.</p></td>
              </tr>
            
              <tr>
                <td>JSON</td>
                <td>2</td>
                <td><p>JavaScript Object Notation format.</p></td>
              </tr>
            
              <tr>
                <td>SQL</td>
                <td>3</td>
                <td><p>SQL statements format.</p></td>
              </tr>
            
              <tr>
                <td>XLSX</td>
                <td>4</td>
                <td><p>Microsoft Excel spreadsheet format.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.RiskLevel">RiskLevel</h3>
        <p>RiskLevel is the risk level.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>RISK_LEVEL_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified risk level.</p></td>
              </tr>
            
              <tr>
                <td>LOW</td>
                <td>1</td>
                <td><p>Low risk operation.</p></td>
              </tr>
            
              <tr>
                <td>MODERATE</td>
                <td>2</td>
                <td><p>Moderate risk operation.</p></td>
              </tr>
            
              <tr>
                <td>HIGH</td>
                <td>3</td>
                <td><p>High risk operation.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.State">State</h3>
        <p>Resource lifecycle state.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>STATE_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>ACTIVE</td>
                <td>1</td>
                <td><p>Resource is active and operational.</p></td>
              </tr>
            
              <tr>
                <td>DELETED</td>
                <td>2</td>
                <td><p>Resource is soft-deleted but may be recoverable.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.VCSType">VCSType</h3>
        <p>Version control system type.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>VCS_TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified VCS type.</p></td>
              </tr>
            
              <tr>
                <td>GITHUB</td>
                <td>1</td>
                <td><p>GitHub version control platform.</p></td>
              </tr>
            
              <tr>
                <td>GITLAB</td>
                <td>2</td>
                <td><p>GitLab version control platform.</p></td>
              </tr>
            
              <tr>
                <td>BITBUCKET</td>
                <td>3</td>
                <td><p>Bitbucket version control platform.</p></td>
              </tr>
            
              <tr>
                <td>AZURE_DEVOPS</td>
                <td>4</td>
                <td><p>Azure DevOps version control platform.</p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
    
      
      <div class="file-heading">
        <h2 id="v1/issue_service.proto">v1/issue_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.ApprovalFlow">ApprovalFlow</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>roles</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The roles required for approval in order. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ApprovalTemplate">ApprovalTemplate</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>flow</td>
                  <td><a href="#bytebase.v1.ApprovalFlow">ApprovalFlow</a></td>
                  <td></td>
                  <td><p>The approval flow definition. </p></td>
                </tr>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The title of the approval template. </p></td>
                </tr>
              
                <tr>
                  <td>description</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The description of the approval template. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ApproveIssueRequest">ApproveIssueRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the issue to add an approver.
Format: projects/{project}/issues/{issue} </p></td>
                </tr>
              
                <tr>
                  <td>comment</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The comment explaining the approval decision. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchUpdateIssuesStatusRequest">BatchUpdateIssuesStatusRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent resource shared by all issues being updated.
Format: projects/{project}
If the operation spans parents, a dash (-) may be accepted as a wildcard.
We only support updating the status of databases for now. </p></td>
                </tr>
              
                <tr>
                  <td>issues</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The list of issues to update.
Format: projects/{project}/issues/{issue} </p></td>
                </tr>
              
                <tr>
                  <td>status</td>
                  <td><a href="#bytebase.v1.IssueStatus">IssueStatus</a></td>
                  <td></td>
                  <td><p>The new status. </p></td>
                </tr>
              
                <tr>
                  <td>reason</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The reason for the status change. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchUpdateIssuesStatusResponse">BatchUpdateIssuesStatusResponse</h3>
        <p></p>

        

        
      
        <h3 id="bytebase.v1.CreateIssueCommentRequest">CreateIssueCommentRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The issue name
Format: projects/{project}/issues/{issue} </p></td>
                </tr>
              
                <tr>
                  <td>issue_comment</td>
                  <td><a href="#bytebase.v1.IssueComment">IssueComment</a></td>
                  <td></td>
                  <td><p>The comment to create. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.CreateIssueRequest">CreateIssueRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent, which owns this collection of issues.
Format: projects/{project} </p></td>
                </tr>
              
                <tr>
                  <td>issue</td>
                  <td><a href="#bytebase.v1.Issue">Issue</a></td>
                  <td></td>
                  <td><p>The issue to create. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetIssueRequest">GetIssueRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the issue to retrieve.
Format: projects/{project}/issues/{issue} </p></td>
                </tr>
              
                <tr>
                  <td>force</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, bypass cache and fetch the latest data. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GrantRequest">GrantRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>role</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The requested role.
Format: roles/EXPORTER. </p></td>
                </tr>
              
                <tr>
                  <td>user</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The user to be granted.
Format: users/{email}. </p></td>
                </tr>
              
                <tr>
                  <td>condition</td>
                  <td><a href="#google.type.Expr">google.type.Expr</a></td>
                  <td></td>
                  <td><p>The condition for the role. Same as the condition in IAM Binding message. </p></td>
                </tr>
              
                <tr>
                  <td>expiration</td>
                  <td><a href="#google.protobuf.Duration">google.protobuf.Duration</a></td>
                  <td></td>
                  <td><p>The duration for which the grant is valid. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Issue">Issue</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the issue.
Format: projects/{project}/issues/{issue} </p></td>
                </tr>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The title of the issue. </p></td>
                </tr>
              
                <tr>
                  <td>description</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The description of the issue. </p></td>
                </tr>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.Issue.Type">Issue.Type</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>status</td>
                  <td><a href="#bytebase.v1.IssueStatus">IssueStatus</a></td>
                  <td></td>
                  <td><p>The status of the issue. </p></td>
                </tr>
              
                <tr>
                  <td>approvers</td>
                  <td><a href="#bytebase.v1.Issue.Approver">Issue.Approver</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>approval_template</td>
                  <td><a href="#bytebase.v1.ApprovalTemplate">ApprovalTemplate</a></td>
                  <td></td>
                  <td><p>The approval template for the issue. </p></td>
                </tr>
              
                <tr>
                  <td>creator</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: users/hello@world.com </p></td>
                </tr>
              
                <tr>
                  <td>create_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>update_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>plan</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The plan associated with the issue.
Can be empty.
Format: projects/{project}/plans/{plan} </p></td>
                </tr>
              
                <tr>
                  <td>rollout</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The rollout associated with the issue.
Can be empty.
Format: projects/{project}/rollouts/{rollout} </p></td>
                </tr>
              
                <tr>
                  <td>grant_request</td>
                  <td><a href="#bytebase.v1.GrantRequest">GrantRequest</a></td>
                  <td></td>
                  <td><p>Used if the issue type is GRANT_REQUEST. </p></td>
                </tr>
              
                <tr>
                  <td>releasers</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The releasers of the pending stage of the issue rollout, judging
from the rollout policy.
Format:
- roles/workspaceOwner
- roles/workspaceDBA
- roles/projectOwner
- roles/projectReleaser </p></td>
                </tr>
              
                <tr>
                  <td>risk_level</td>
                  <td><a href="#bytebase.v1.RiskLevel">RiskLevel</a></td>
                  <td></td>
                  <td><p>The risk level of the issue. </p></td>
                </tr>
              
                <tr>
                  <td>task_status_count</td>
                  <td><a href="#bytebase.v1.Issue.TaskStatusCountEntry">Issue.TaskStatusCountEntry</a></td>
                  <td>repeated</td>
                  <td><p>The status count of the issue.
Keys are the following:
- NOT_STARTED
- SKIPPED
- PENDING
- RUNNING
- DONE
- FAILED
- CANCELED </p></td>
                </tr>
              
                <tr>
                  <td>labels</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>Labels attached to the issue for categorization and filtering. </p></td>
                </tr>
              
                <tr>
                  <td>approval_status</td>
                  <td><a href="#bytebase.v1.Issue.ApprovalStatus">Issue.ApprovalStatus</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>approval_status_error</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Only populated when approval_status == ERROR </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Issue.Approver">Issue.Approver</h3>
        <p>Approvers and their approval status for the issue.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>status</td>
                  <td><a href="#bytebase.v1.Issue.Approver.Status">Issue.Approver.Status</a></td>
                  <td></td>
                  <td><p>The new status. </p></td>
                </tr>
              
                <tr>
                  <td>principal</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: users/hello@world.com </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Issue.TaskStatusCountEntry">Issue.TaskStatusCountEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.IssueComment">IssueComment</h3>
        <p>A comment on an issue.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project}/issues/{issue}/issueComments/{issueComment-uid} </p></td>
                </tr>
              
                <tr>
                  <td>comment</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The text content of the comment. </p></td>
                </tr>
              
                <tr>
                  <td>payload</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>TODO: use struct message instead. </p></td>
                </tr>
              
                <tr>
                  <td>create_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>update_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>creator</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: users/{email} </p></td>
                </tr>
              
                <tr>
                  <td>approval</td>
                  <td><a href="#bytebase.v1.IssueComment.Approval">IssueComment.Approval</a></td>
                  <td></td>
                  <td><p>Approval event. </p></td>
                </tr>
              
                <tr>
                  <td>issue_update</td>
                  <td><a href="#bytebase.v1.IssueComment.IssueUpdate">IssueComment.IssueUpdate</a></td>
                  <td></td>
                  <td><p>Issue update event. </p></td>
                </tr>
              
                <tr>
                  <td>stage_end</td>
                  <td><a href="#bytebase.v1.IssueComment.StageEnd">IssueComment.StageEnd</a></td>
                  <td></td>
                  <td><p>Stage end event. </p></td>
                </tr>
              
                <tr>
                  <td>task_update</td>
                  <td><a href="#bytebase.v1.IssueComment.TaskUpdate">IssueComment.TaskUpdate</a></td>
                  <td></td>
                  <td><p>Task update event. </p></td>
                </tr>
              
                <tr>
                  <td>task_prior_backup</td>
                  <td><a href="#bytebase.v1.IssueComment.TaskPriorBackup">IssueComment.TaskPriorBackup</a></td>
                  <td></td>
                  <td><p>Task prior backup event. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.IssueComment.Approval">IssueComment.Approval</h3>
        <p>Approval event information.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>status</td>
                  <td><a href="#bytebase.v1.IssueComment.Approval.Status">IssueComment.Approval.Status</a></td>
                  <td></td>
                  <td><p>The approval status. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.IssueComment.IssueUpdate">IssueComment.IssueUpdate</h3>
        <p>Issue update event information.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>from_title</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>to_title</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>from_description</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>to_description</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>from_status</td>
                  <td><a href="#bytebase.v1.IssueStatus">IssueStatus</a></td>
                  <td>optional</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>to_status</td>
                  <td><a href="#bytebase.v1.IssueStatus">IssueStatus</a></td>
                  <td>optional</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>from_labels</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>to_labels</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.IssueComment.StageEnd">IssueComment.StageEnd</h3>
        <p>Stage end event information.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>stage</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The stage that ended. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.IssueComment.TaskPriorBackup">IssueComment.TaskPriorBackup</h3>
        <p>Task prior backup event information.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>task</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The task for which backup was performed. </p></td>
                </tr>
              
                <tr>
                  <td>tables</td>
                  <td><a href="#bytebase.v1.IssueComment.TaskPriorBackup.Table">IssueComment.TaskPriorBackup.Table</a></td>
                  <td>repeated</td>
                  <td><p>The tables that were backed up. </p></td>
                </tr>
              
                <tr>
                  <td>original_line</td>
                  <td><a href="#int32">int32</a></td>
                  <td>optional</td>
                  <td><p>The original line number in the statement. </p></td>
                </tr>
              
                <tr>
                  <td>database</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The database that was backed up. </p></td>
                </tr>
              
                <tr>
                  <td>error</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Error message if backup failed. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.IssueComment.TaskPriorBackup.Table">IssueComment.TaskPriorBackup.Table</h3>
        <p>Table identification.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>schema</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The schema name. </p></td>
                </tr>
              
                <tr>
                  <td>table</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The table name. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.IssueComment.TaskUpdate">IssueComment.TaskUpdate</h3>
        <p>Task update event information.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>tasks</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The tasks that were updated. </p></td>
                </tr>
              
                <tr>
                  <td>from_sheet</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>Format: projects/{project}/sheets/{sheet} </p></td>
                </tr>
              
                <tr>
                  <td>to_sheet</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>Format: projects/{project}/sheets/{sheet} </p></td>
                </tr>
              
                <tr>
                  <td>to_status</td>
                  <td><a href="#bytebase.v1.IssueComment.TaskUpdate.Status">IssueComment.TaskUpdate.Status</a></td>
                  <td>optional</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListIssueCommentsRequest">ListIssueCommentsRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{projects}/issues/{issue} </p></td>
                </tr>
              
                <tr>
                  <td>page_size</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of issue comments to return. The service may return fewer than
this value.
If unspecified, at most 10 issue comments will be returned.
The maximum value is 1000; values above 1000 will be coerced to 1000. </p></td>
                </tr>
              
                <tr>
                  <td>page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A page token, received from a previous `ListIssueComments` call.
Provide this to retrieve the subsequent page.

When paginating, all other parameters provided to `ListIssueComments` must match
the call that provided the page token. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListIssueCommentsResponse">ListIssueCommentsResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>issue_comments</td>
                  <td><a href="#bytebase.v1.IssueComment">IssueComment</a></td>
                  <td>repeated</td>
                  <td><p>The issue comments from the specified request. </p></td>
                </tr>
              
                <tr>
                  <td>next_page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A token, which can be sent as `page_token` to retrieve the next page.
If this field is omitted, there are no subsequent pages. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListIssuesRequest">ListIssuesRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent, which owns this collection of issues.
Format: projects/{project} </p></td>
                </tr>
              
                <tr>
                  <td>page_size</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of issues to return. The service may return fewer than
this value.
If unspecified, at most 10 issues will be returned.
The maximum value is 1000; values above 1000 will be coerced to 1000. </p></td>
                </tr>
              
                <tr>
                  <td>page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A page token, received from a previous `ListIssues` call.
Provide this to retrieve the subsequent page.

When paginating, all other parameters provided to `ListIssues` must match
the call that provided the page token. </p></td>
                </tr>
              
                <tr>
                  <td>filter</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Filter is used to filter issues returned in the list.
The syntax and semantics of CEL are documented at https://github.com/google/cel-spec

Supported filters:
- creator: issue creator full name in &#34;users/{email or id}&#34; format, support &#34;==&#34; operator.
- status: the issue status, support &#34;==&#34; and &#34;in&#34; operator, check the IssueStatus enum for the values.
- create_time: issue create time in &#34;2006-01-02T15:04:05Z07:00&#34; format, support &#34;&gt;=&#34; or &#34;&lt;=&#34; operator.
- type: the issue type, support &#34;==&#34; and &#34;in&#34; operator, check the Type enum in the Issue message for the values.
- task_type: support &#34;==&#34; operator, the value can be &#34;DDL&#34;, &#34;DML&#34; or &#34;DATA_EXPORT&#34;
- instance: the instance full name in the &#34;instances/{id}&#34; format, support &#34;==&#34; operator.
- database: the database full name in the &#34;instances/{id}/databases/{name}&#34; format, support &#34;==&#34; operator.
- environment: the database full name in the &#34;environments/{name}&#34; format, support &#34;==&#34; operator.
- labels: the issue labels, support &#34;==&#34; and &#34;in&#34; operator.
- approval_status: issue approval status, support &#34;==&#34; operator.
- current_approver: the issue approver, should in &#34;users/{email} format&#34;, support &#34;==&#34; operator.

For example:
creator == &#34;users/ed@bytebase.com&#34; &amp;&amp; status in [&#34;OPEN&#34;, &#34;DONE&#34;]
status == &#34;CANCELED&#34; &amp;&amp; type == &#34;DATABASE_CHANGE&#34;
instance == &#34;instances/sample&#34; &amp;&amp; labels in [&#34;label1&#34;, &#34;label2&#34;]
create_time &gt;= &#34;2025-01-02T15:04:05Z07:00&#34;
environment == &#34;environments/test&#34; </p></td>
                </tr>
              
                <tr>
                  <td>query</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Query is the query statement. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListIssuesResponse">ListIssuesResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>issues</td>
                  <td><a href="#bytebase.v1.Issue">Issue</a></td>
                  <td>repeated</td>
                  <td><p>The issues from the specified request. </p></td>
                </tr>
              
                <tr>
                  <td>next_page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A token, which can be sent as `page_token` to retrieve the next page.
If this field is omitted, there are no subsequent pages. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.RejectIssueRequest">RejectIssueRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the issue to add a rejection.
Format: projects/{project}/issues/{issue} </p></td>
                </tr>
              
                <tr>
                  <td>comment</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The comment explaining the rejection decision. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.RequestIssueRequest">RequestIssueRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the issue to request a issue.
Format: projects/{project}/issues/{issue} </p></td>
                </tr>
              
                <tr>
                  <td>comment</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The comment explaining the request. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SearchIssuesRequest">SearchIssuesRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent, which owns this collection of issues.
Format: projects/{project}
Use &#34;projects/-&#34; to list all issues from all projects. </p></td>
                </tr>
              
                <tr>
                  <td>page_size</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of issues to return. The service may return fewer than
this value.
If unspecified, at most 10 issues will be returned.
The maximum value is 1000; values above 1000 will be coerced to 1000. </p></td>
                </tr>
              
                <tr>
                  <td>page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A page token, received from a previous `SearchIssues` call.
Provide this to retrieve the subsequent page.

When paginating, all other parameters provided to `SearchIssues` must match
the call that provided the page token. </p></td>
                </tr>
              
                <tr>
                  <td>filter</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Filter is used to filter issues returned in the list.
Check the filter field in the ListIssuesRequest message. </p></td>
                </tr>
              
                <tr>
                  <td>query</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Query is the query statement. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SearchIssuesResponse">SearchIssuesResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>issues</td>
                  <td><a href="#bytebase.v1.Issue">Issue</a></td>
                  <td>repeated</td>
                  <td><p>The issues from the specified request. </p></td>
                </tr>
              
                <tr>
                  <td>next_page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A token, which can be sent as `page_token` to retrieve the next page.
If this field is omitted, there are no subsequent pages. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UpdateIssueCommentRequest">UpdateIssueCommentRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The issue name
Format: projects/{project}/issues/{issue} </p></td>
                </tr>
              
                <tr>
                  <td>issue_comment</td>
                  <td><a href="#bytebase.v1.IssueComment">IssueComment</a></td>
                  <td></td>
                  <td><p>The comment to update. </p></td>
                </tr>
              
                <tr>
                  <td>update_mask</td>
                  <td><a href="#google.protobuf.FieldMask">google.protobuf.FieldMask</a></td>
                  <td></td>
                  <td><p>The list of fields to update. </p></td>
                </tr>
              
                <tr>
                  <td>allow_missing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, and the issue comment is not found, a new issue comment will be created.
In this situation, `update_mask` is ignored. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UpdateIssueRequest">UpdateIssueRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>issue</td>
                  <td><a href="#bytebase.v1.Issue">Issue</a></td>
                  <td></td>
                  <td><p>The issue to update.

The issue&#39;s `name` field is used to identify the issue to update.
Format: projects/{project}/issues/{issue} </p></td>
                </tr>
              
                <tr>
                  <td>update_mask</td>
                  <td><a href="#google.protobuf.FieldMask">google.protobuf.FieldMask</a></td>
                  <td></td>
                  <td><p>The list of fields to update. </p></td>
                </tr>
              
                <tr>
                  <td>allow_missing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, and the issue is not found, a new issue will be created.
In this situation, `update_mask` is ignored. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.Issue.ApprovalStatus">Issue.ApprovalStatus</h3>
        <p>The overall approval status for the issue.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>APPROVAL_STATUS_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified approval status.</p></td>
              </tr>
            
              <tr>
                <td>CHECKING</td>
                <td>1</td>
                <td><p>Approval checks are being evaluated.</p></td>
              </tr>
            
              <tr>
                <td>PENDING</td>
                <td>2</td>
                <td><p>Approval is pending.</p></td>
              </tr>
            
              <tr>
                <td>APPROVED</td>
                <td>3</td>
                <td><p>Issue has been approved.</p></td>
              </tr>
            
              <tr>
                <td>REJECTED</td>
                <td>4</td>
                <td><p>Issue has been rejected.</p></td>
              </tr>
            
              <tr>
                <td>SKIPPED</td>
                <td>5</td>
                <td><p>Approval was skipped.</p></td>
              </tr>
            
              <tr>
                <td>ERROR</td>
                <td>6</td>
                <td><p>Error occurred during approval evaluation.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.Issue.Approver.Status">Issue.Approver.Status</h3>
        <p>The approval status of an approver.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>STATUS_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified status.</p></td>
              </tr>
            
              <tr>
                <td>PENDING</td>
                <td>1</td>
                <td><p>Awaiting approval.</p></td>
              </tr>
            
              <tr>
                <td>APPROVED</td>
                <td>2</td>
                <td><p>Approved.</p></td>
              </tr>
            
              <tr>
                <td>REJECTED</td>
                <td>3</td>
                <td><p>Rejected.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.Issue.Type">Issue.Type</h3>
        <p>The type of issue.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified issue type.</p></td>
              </tr>
            
              <tr>
                <td>DATABASE_CHANGE</td>
                <td>1</td>
                <td><p>Database schema or data change.</p></td>
              </tr>
            
              <tr>
                <td>GRANT_REQUEST</td>
                <td>2</td>
                <td><p>Database access grant request.</p></td>
              </tr>
            
              <tr>
                <td>DATABASE_EXPORT</td>
                <td>3</td>
                <td><p>Database data export request.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.IssueComment.Approval.Status">IssueComment.Approval.Status</h3>
        <p>Approval status values.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>STATUS_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified status.</p></td>
              </tr>
            
              <tr>
                <td>PENDING</td>
                <td>1</td>
                <td><p>Approval pending.</p></td>
              </tr>
            
              <tr>
                <td>APPROVED</td>
                <td>2</td>
                <td><p>Approved.</p></td>
              </tr>
            
              <tr>
                <td>REJECTED</td>
                <td>3</td>
                <td><p>Rejected.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.IssueComment.TaskUpdate.Status">IssueComment.TaskUpdate.Status</h3>
        <p>Task status values.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>STATUS_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified status.</p></td>
              </tr>
            
              <tr>
                <td>PENDING</td>
                <td>1</td>
                <td><p>Task is pending.</p></td>
              </tr>
            
              <tr>
                <td>RUNNING</td>
                <td>2</td>
                <td><p>Task is running.</p></td>
              </tr>
            
              <tr>
                <td>DONE</td>
                <td>3</td>
                <td><p>Task is done.</p></td>
              </tr>
            
              <tr>
                <td>FAILED</td>
                <td>4</td>
                <td><p>Task failed.</p></td>
              </tr>
            
              <tr>
                <td>SKIPPED</td>
                <td>5</td>
                <td><p>Task was skipped.</p></td>
              </tr>
            
              <tr>
                <td>CANCELED</td>
                <td>6</td>
                <td><p>Task was canceled.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.IssueStatus">IssueStatus</h3>
        <p>The status of an issue.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>ISSUE_STATUS_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified status.</p></td>
              </tr>
            
              <tr>
                <td>OPEN</td>
                <td>1</td>
                <td><p>Issue is open and active.</p></td>
              </tr>
            
              <tr>
                <td>DONE</td>
                <td>2</td>
                <td><p>Issue is completed.</p></td>
              </tr>
            
              <tr>
                <td>CANCELED</td>
                <td>3</td>
                <td><p>Issue is canceled.</p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
        <h3 id="bytebase.v1.IssueService">IssueService</h3>
        <p>IssueService manages issues for tracking database changes and tasks.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>GetIssue</td>
                <td><a href="#bytebase.v1.GetIssueRequest">GetIssueRequest</a></td>
                <td><a href="#bytebase.v1.Issue">Issue</a></td>
                <td><p>Retrieves an issue by name.
Permissions required: bb.issues.get</p></td>
              </tr>
            
              <tr>
                <td>CreateIssue</td>
                <td><a href="#bytebase.v1.CreateIssueRequest">CreateIssueRequest</a></td>
                <td><a href="#bytebase.v1.Issue">Issue</a></td>
                <td><p>Creates a new issue for database changes or tasks.
Permissions required: bb.issues.create</p></td>
              </tr>
            
              <tr>
                <td>ListIssues</td>
                <td><a href="#bytebase.v1.ListIssuesRequest">ListIssuesRequest</a></td>
                <td><a href="#bytebase.v1.ListIssuesResponse">ListIssuesResponse</a></td>
                <td><p>Lists issues in a project.
Permissions required: bb.issues.list</p></td>
              </tr>
            
              <tr>
                <td>SearchIssues</td>
                <td><a href="#bytebase.v1.SearchIssuesRequest">SearchIssuesRequest</a></td>
                <td><a href="#bytebase.v1.SearchIssuesResponse">SearchIssuesResponse</a></td>
                <td><p>Search for issues that the caller has the bb.issues.get permission on and also satisfy the specified filter &amp; query.
Permissions required: bb.issues.get</p></td>
              </tr>
            
              <tr>
                <td>UpdateIssue</td>
                <td><a href="#bytebase.v1.UpdateIssueRequest">UpdateIssueRequest</a></td>
                <td><a href="#bytebase.v1.Issue">Issue</a></td>
                <td><p>Updates an issue&#39;s properties such as title, description, or labels.
Permissions required: bb.issues.update</p></td>
              </tr>
            
              <tr>
                <td>ListIssueComments</td>
                <td><a href="#bytebase.v1.ListIssueCommentsRequest">ListIssueCommentsRequest</a></td>
                <td><a href="#bytebase.v1.ListIssueCommentsResponse">ListIssueCommentsResponse</a></td>
                <td><p>Lists comments on an issue.
Permissions required: bb.issueComments.list</p></td>
              </tr>
            
              <tr>
                <td>CreateIssueComment</td>
                <td><a href="#bytebase.v1.CreateIssueCommentRequest">CreateIssueCommentRequest</a></td>
                <td><a href="#bytebase.v1.IssueComment">IssueComment</a></td>
                <td><p>Adds a comment to an issue.
Permissions required: bb.issueComments.create</p></td>
              </tr>
            
              <tr>
                <td>UpdateIssueComment</td>
                <td><a href="#bytebase.v1.UpdateIssueCommentRequest">UpdateIssueCommentRequest</a></td>
                <td><a href="#bytebase.v1.IssueComment">IssueComment</a></td>
                <td><p>Updates an existing issue comment.
Permissions required: bb.issueComments.update</p></td>
              </tr>
            
              <tr>
                <td>BatchUpdateIssuesStatus</td>
                <td><a href="#bytebase.v1.BatchUpdateIssuesStatusRequest">BatchUpdateIssuesStatusRequest</a></td>
                <td><a href="#bytebase.v1.BatchUpdateIssuesStatusResponse">BatchUpdateIssuesStatusResponse</a></td>
                <td><p>Updates the status of multiple issues in a single operation.
Permissions required: bb.issues.update</p></td>
              </tr>
            
              <tr>
                <td>ApproveIssue</td>
                <td><a href="#bytebase.v1.ApproveIssueRequest">ApproveIssueRequest</a></td>
                <td><a href="#bytebase.v1.Issue">Issue</a></td>
                <td><p>Approves an issue. Access determined by approval flow configuration - caller must be a designated approver for the current approval step.
Permissions required: None (determined by approval flow)</p></td>
              </tr>
            
              <tr>
                <td>RejectIssue</td>
                <td><a href="#bytebase.v1.RejectIssueRequest">RejectIssueRequest</a></td>
                <td><a href="#bytebase.v1.Issue">Issue</a></td>
                <td><p>Rejects an issue. Access determined by approval flow configuration - caller must be a designated approver for the current approval step.
Permissions required: None (determined by approval flow)</p></td>
              </tr>
            
              <tr>
                <td>RequestIssue</td>
                <td><a href="#bytebase.v1.RequestIssueRequest">RequestIssueRequest</a></td>
                <td><a href="#bytebase.v1.Issue">Issue</a></td>
                <td><p>Requests changes on an issue. Access determined by approval flow configuration - caller must be a designated approver for the current approval step.
Permissions required: None (determined by approval flow)</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>GetIssue</td>
                <td>GET</td>
                <td>/v1/{name=projects/*/issues/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>CreateIssue</td>
                <td>POST</td>
                <td>/v1/{parent=projects/*}/issues</td>
                <td>issue</td>
              </tr>
              
            
              
              
              <tr>
                <td>ListIssues</td>
                <td>GET</td>
                <td>/v1/{parent=projects/*}/issues</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>SearchIssues</td>
                <td>POST</td>
                <td>/v1/{parent=projects/*}/issues:search</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>UpdateIssue</td>
                <td>PATCH</td>
                <td>/v1/{issue.name=projects/*/issues/*}</td>
                <td>issue</td>
              </tr>
              
            
              
              
              <tr>
                <td>ListIssueComments</td>
                <td>GET</td>
                <td>/v1/{parent=projects/*/issues/*}/issueComments</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>CreateIssueComment</td>
                <td>POST</td>
                <td>/v1/{parent=projects/*/issues/*}:comment</td>
                <td>issue_comment</td>
              </tr>
              
            
              
              
              <tr>
                <td>UpdateIssueComment</td>
                <td>PATCH</td>
                <td>/v1/{parent=projects/*/issues/*}:comment</td>
                <td>issue_comment</td>
              </tr>
              
            
              
              
              <tr>
                <td>BatchUpdateIssuesStatus</td>
                <td>POST</td>
                <td>/v1/{parent=projects/*}/issues:batchUpdateStatus</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>ApproveIssue</td>
                <td>POST</td>
                <td>/v1/{name=projects/*/issues/*}:approve</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>RejectIssue</td>
                <td>POST</td>
                <td>/v1/{name=projects/*/issues/*}:reject</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>RequestIssue</td>
                <td>POST</td>
                <td>/v1/{name=projects/*/issues/*}:request</td>
                <td>*</td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/iam_policy.proto">v1/iam_policy.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.Binding">Binding</h3>
        <p>Binding associates members with a role and optional conditions.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>role</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The role that is assigned to the members.
Format: roles/{role} </p></td>
                </tr>
              
                <tr>
                  <td>members</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>Specifies the principals requesting access for a Bytebase resource.
For users, the member should be: user:{email}
For groups, the member should be: group:{email} </p></td>
                </tr>
              
                <tr>
                  <td>condition</td>
                  <td><a href="#google.type.Expr">google.type.Expr</a></td>
                  <td></td>
                  <td><p>The condition that is associated with this binding, only used in the project IAM policy.
If the condition evaluates to true, then this binding applies to the current request.
If the condition evaluates to false, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding.
The syntax and semantics of CEL are documented at https://github.com/google/cel-spec

Support variables:
resource.database: the database full name in &#34;instances/{instance}/databases/{database}&#34; format, used by the &#34;roles/sqlEditorUser&#34; role, support &#34;==&#34; operator.
resource.schema_name: the schema name, used by the &#34;roles/sqlEditorUser&#34; role, support &#34;==&#34; operator.
resource.table_name: the table name, used by the &#34;roles/sqlEditorUser&#34; role, support &#34;==&#34; operator.
request.time: the expiration. Only support &#34;&lt;&#34; operation in `request.time &lt; timestamp(&#34;{ISO datetime string format}&#34;)`.

For example:
resource.database == &#34;instances/local-pg/databases/postgres&#34; &amp;&amp; resource.schema_name in [&#34;public&#34;,&#34;another_schema&#34;]
resource.database == &#34;instances/local-pg/databases/bytebase&#34; &amp;&amp; resource.schema_name == &#34;public&#34; &amp;&amp; resource.table_name in [&#34;audit_log&#34;]
request.time &lt; timestamp(&#34;2025-04-26T11:24:48.655Z&#34;) </p></td>
                </tr>
              
                <tr>
                  <td>parsed_expr</td>
                  <td><a href="#google.api.expr.v1alpha1.Expr">google.api.expr.v1alpha1.Expr</a></td>
                  <td></td>
                  <td><p>The parsed expression of the condition. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BindingDelta">BindingDelta</h3>
        <p>A single change to a binding.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>action</td>
                  <td><a href="#bytebase.v1.BindingDelta.Action">BindingDelta.Action</a></td>
                  <td></td>
                  <td><p>The action that was performed on a Binding. </p></td>
                </tr>
              
                <tr>
                  <td>role</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Role that is assigned to `members`.
For example, `roles/projectOwner`. </p></td>
                </tr>
              
                <tr>
                  <td>member</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Follows the same format of Binding.members. </p></td>
                </tr>
              
                <tr>
                  <td>condition</td>
                  <td><a href="#google.type.Expr">google.type.Expr</a></td>
                  <td></td>
                  <td><p>The condition that is associated with this binding. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetIamPolicyRequest">GetIamPolicyRequest</h3>
        <p>Request message for getting an IAM policy.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>resource</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the resource to get the IAM policy.
Format: projects/{project}
Format: workspaces/{workspace} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.IamPolicy">IamPolicy</h3>
        <p>IAM policy that binds members to roles.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>bindings</td>
                  <td><a href="#bytebase.v1.Binding">Binding</a></td>
                  <td>repeated</td>
                  <td><p>Collection of binding.
A binding binds one or more project members to a single project role. </p></td>
                </tr>
              
                <tr>
                  <td>etag</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The current etag of the policy.
If an etag is provided and does not match the current etag of the policy,
the call will be blocked and an ABORTED error will be returned. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.PolicyDelta">PolicyDelta</h3>
        <p>Describes changes between two IAM policies.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>binding_deltas</td>
                  <td><a href="#bytebase.v1.BindingDelta">BindingDelta</a></td>
                  <td>repeated</td>
                  <td><p>The delta for Bindings between two policies. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SetIamPolicyRequest">SetIamPolicyRequest</h3>
        <p>Request message for setting an IAM policy.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>resource</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the resource to set the IAM policy.
Format: projects/{project}
Format: workspaces/{workspace} </p></td>
                </tr>
              
                <tr>
                  <td>policy</td>
                  <td><a href="#bytebase.v1.IamPolicy">IamPolicy</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>etag</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The current etag of the policy. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.BindingDelta.Action">BindingDelta.Action</h3>
        <p>Type of action performed on a binding.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>ACTION_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified action.</p></td>
              </tr>
            
              <tr>
                <td>ADD</td>
                <td>1</td>
                <td><p>Add a binding.</p></td>
              </tr>
            
              <tr>
                <td>REMOVE</td>
                <td>2</td>
                <td><p>Remove a binding.</p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
    
      
      <div class="file-heading">
        <h2 id="v1/project_service.proto">v1/project_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.Activity">Activity</h3>
        <p>Activity types for webhook notifications.</p>

        

        
      
        <h3 id="bytebase.v1.AddWebhookRequest">AddWebhookRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>project</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the project to add the webhook to.
Format: projects/{project} </p></td>
                </tr>
              
                <tr>
                  <td>webhook</td>
                  <td><a href="#bytebase.v1.Webhook">Webhook</a></td>
                  <td></td>
                  <td><p>The webhook to add. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchDeleteProjectsRequest">BatchDeleteProjectsRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>names</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The names of the projects to delete.
Format: projects/{project} </p></td>
                </tr>
              
                <tr>
                  <td>force</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, any databases from this project will be moved to default project.
Sheets are not moved since BYTEBASE_ARTIFACT sheets belong to the issue and issue project.
Open issues will remain open but associated with the deleted project.
If set to false, the operation will fail if the project has databases or open issues. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchGetIamPolicyRequest">BatchGetIamPolicyRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>scope</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The scope of the batch get. Typically it&#39;s &#34;projects/-&#34;. </p></td>
                </tr>
              
                <tr>
                  <td>names</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchGetIamPolicyResponse">BatchGetIamPolicyResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>policy_results</td>
                  <td><a href="#bytebase.v1.BatchGetIamPolicyResponse.PolicyResult">BatchGetIamPolicyResponse.PolicyResult</a></td>
                  <td>repeated</td>
                  <td><p>The policy results for each requested project. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchGetIamPolicyResponse.PolicyResult">BatchGetIamPolicyResponse.PolicyResult</h3>
        <p>Result for a single project's IAM policy.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>project</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The project resource name. </p></td>
                </tr>
              
                <tr>
                  <td>policy</td>
                  <td><a href="#bytebase.v1.IamPolicy">IamPolicy</a></td>
                  <td></td>
                  <td><p>The IAM policy for the project. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.CreateProjectRequest">CreateProjectRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>project</td>
                  <td><a href="#bytebase.v1.Project">Project</a></td>
                  <td></td>
                  <td><p>The project to create. </p></td>
                </tr>
              
                <tr>
                  <td>project_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The ID to use for the project, which will become the final component of
the project&#39;s resource name.

This value should be 4-63 characters, and valid characters
are /[a-z][0-9]-/. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DeleteProjectRequest">DeleteProjectRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the project to delete.
Format: projects/{project} </p></td>
                </tr>
              
                <tr>
                  <td>force</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, any databases from this project will be moved to default project.
Sheets are not moved since BYTEBASE_ARTIFACT sheets belong to the issue and issue project.
Open issues will remain open but associated with the deleted project.
If set to false, the operation will fail if the project has databases or open issues. </p></td>
                </tr>
              
                <tr>
                  <td>purge</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, permanently purge the soft-deleted project and all related resources.
This operation is irreversible. Following AIP-165, this should only be used for
administrative cleanup of old soft-deleted projects.
The project must already be soft-deleted for this to work. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetProjectRequest">GetProjectRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the project to retrieve.
Format: projects/{project} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Label">Label</h3>
        <p>A label for categorizing and organizing issues.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>value</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The label value/name. </p></td>
                </tr>
              
                <tr>
                  <td>color</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The color code for the label (e.g., hex color). </p></td>
                </tr>
              
                <tr>
                  <td>group</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The group this label belongs to. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListProjectsRequest">ListProjectsRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>page_size</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of projects to return. The service may return fewer than
this value.
If unspecified, at most 10 projects will be returned.
The maximum value is 1000; values above 1000 will be coerced to 1000. </p></td>
                </tr>
              
                <tr>
                  <td>page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A page token, received from a previous `ListProjects` call.
Provide this to retrieve the subsequent page.

When paginating, all other parameters provided to `ListProjects` must match
the call that provided the page token. </p></td>
                </tr>
              
                <tr>
                  <td>show_deleted</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Show deleted projects if specified. </p></td>
                </tr>
              
                <tr>
                  <td>filter</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Filter the project.
Check filter for SearchProjectsRequest for details.
Supports filtering by name, resource_id, state, and labels (e.g., labels.environment == &#34;production&#34;). </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListProjectsResponse">ListProjectsResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>projects</td>
                  <td><a href="#bytebase.v1.Project">Project</a></td>
                  <td>repeated</td>
                  <td><p>The projects from the specified request. </p></td>
                </tr>
              
                <tr>
                  <td>next_page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A token, which can be sent as `page_token` to retrieve the next page.
If this field is omitted, there are no subsequent pages. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Project">Project</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the project.
Format: projects/{project} </p></td>
                </tr>
              
                <tr>
                  <td>state</td>
                  <td><a href="#bytebase.v1.State">State</a></td>
                  <td></td>
                  <td><p>The lifecycle state of the project. </p></td>
                </tr>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The title or name of a project. It&#39;s not unique within the workspace. </p></td>
                </tr>
              
                <tr>
                  <td>webhooks</td>
                  <td><a href="#bytebase.v1.Webhook">Webhook</a></td>
                  <td>repeated</td>
                  <td><p>The list of webhooks configured for the project. </p></td>
                </tr>
              
                <tr>
                  <td>data_classification_config_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The data classification configuration ID for the project. </p></td>
                </tr>
              
                <tr>
                  <td>issue_labels</td>
                  <td><a href="#bytebase.v1.Label">Label</a></td>
                  <td>repeated</td>
                  <td><p>Labels available for tagging issues in this project. </p></td>
                </tr>
              
                <tr>
                  <td>force_issue_labels</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Force issue labels to be used when creating an issue. </p></td>
                </tr>
              
                <tr>
                  <td>allow_modify_statement</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Allow modifying SQL statements after issue is created. </p></td>
                </tr>
              
                <tr>
                  <td>auto_resolve_issue</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Enable automatic issue resolution when tasks complete. </p></td>
                </tr>
              
                <tr>
                  <td>enforce_issue_title</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Enforce issue title to be created by user instead of generated by Bytebase. </p></td>
                </tr>
              
                <tr>
                  <td>auto_enable_backup</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether to automatically enable backup for database changes. </p></td>
                </tr>
              
                <tr>
                  <td>skip_backup_errors</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether to skip backup errors and continue with data migration. </p></td>
                </tr>
              
                <tr>
                  <td>postgres_database_tenant_mode</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether to enable database tenant mode for PostgreSQL.
If enabled, issues will include &#34;set role &lt;db_owner&gt;&#34; statement. </p></td>
                </tr>
              
                <tr>
                  <td>allow_self_approval</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether to allow issue creators to self-approve their own issues. </p></td>
                </tr>
              
                <tr>
                  <td>execution_retry_policy</td>
                  <td><a href="#bytebase.v1.Project.ExecutionRetryPolicy">Project.ExecutionRetryPolicy</a></td>
                  <td></td>
                  <td><p>Execution retry policy for task runs. </p></td>
                </tr>
              
                <tr>
                  <td>ci_sampling_size</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of database rows to sample during CI data validation.
Without specification, sampling is disabled, resulting in full validation. </p></td>
                </tr>
              
                <tr>
                  <td>parallel_tasks_per_rollout</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of parallel tasks allowed during rollout execution. </p></td>
                </tr>
              
                <tr>
                  <td>labels</td>
                  <td><a href="#bytebase.v1.Project.LabelsEntry">Project.LabelsEntry</a></td>
                  <td>repeated</td>
                  <td><p>Labels are key-value pairs that can be attached to the project.
For example, { &#34;environment&#34;: &#34;production&#34;, &#34;team&#34;: &#34;backend&#34; } </p></td>
                </tr>
              
                <tr>
                  <td>enforce_sql_review</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether to enforce SQL review checks to pass before issue creation.
If enabled, issues cannot be created when SQL review finds errors. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Project.ExecutionRetryPolicy">Project.ExecutionRetryPolicy</h3>
        <p>Execution retry policy configuration.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>maximum_retries</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of retries for lock timeout errors. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Project.LabelsEntry">Project.LabelsEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.RemoveWebhookRequest">RemoveWebhookRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>webhook</td>
                  <td><a href="#bytebase.v1.Webhook">Webhook</a></td>
                  <td></td>
                  <td><p>The webhook to remove. Identified by its url. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SearchProjectsRequest">SearchProjectsRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>show_deleted</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Show deleted projects if specified. </p></td>
                </tr>
              
                <tr>
                  <td>filter</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Filter the project.
The syntax and semantics of CEL are documented at https://github.com/google/cel-spec

Supported filters:
- name: the project name, support &#34;==&#34; and &#34;.matches()&#34; operator.
- resource_id: the project id, support &#34;==&#34; and &#34;.matches()&#34; operator.
- exclude_default: if not include the default project, should be &#34;true&#34; or &#34;false&#34;, support &#34;==&#34; operator.
- state: check the State enum for the values, support &#34;==&#34; operator.
- labels.{key}: the project label, support &#34;==&#34; and &#34;in&#34; operators.

For example:
name == &#34;project name&#34;
name.matches(&#34;project name&#34;)
resource_id == &#34;project id&#34;
resource_id.matches(&#34;project id&#34;)
exclude_default == true
state == &#34;DELETED&#34;
labels.environment == &#34;production&#34;
labels.tier == &#34;critical&#34;
labels.environment in [&#34;staging&#34;, &#34;prod&#34;]
You can combine filter conditions like:
name == &#34;project name&#34; &amp;&amp; resource_id.matches(&#34;project id&#34;)
name.matches(&#34;project name&#34;) || resource_id == &#34;project id&#34;
labels.environment == &#34;production&#34; &amp;&amp; labels.tier == &#34;critical&#34; </p></td>
                </tr>
              
                <tr>
                  <td>page_size</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of projects to return. The service may return fewer than
this value.
If unspecified, at most 10 projects will be returned.
The maximum value is 1000; values above 1000 will be coerced to 1000. </p></td>
                </tr>
              
                <tr>
                  <td>page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A page token, received from a previous `SearchProjects` call.
Provide this to retrieve the subsequent page.

When paginating, all other parameters provided to `SearchProjects` must match
the call that provided the page token. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SearchProjectsResponse">SearchProjectsResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>projects</td>
                  <td><a href="#bytebase.v1.Project">Project</a></td>
                  <td>repeated</td>
                  <td><p>The projects from the specified request. </p></td>
                </tr>
              
                <tr>
                  <td>next_page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A token, which can be sent as `page_token` to retrieve the next page.
If this field is omitted, there are no subsequent pages. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TestWebhookRequest">TestWebhookRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>project</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the project which owns the webhook to test.
Format: projects/{project} </p></td>
                </tr>
              
                <tr>
                  <td>webhook</td>
                  <td><a href="#bytebase.v1.Webhook">Webhook</a></td>
                  <td></td>
                  <td><p>The webhook to test. Identified by its url. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TestWebhookResponse">TestWebhookResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>error</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The result of the test, empty if the test is successful. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UndeleteProjectRequest">UndeleteProjectRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the deleted project.
Format: projects/{project} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UpdateProjectRequest">UpdateProjectRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>project</td>
                  <td><a href="#bytebase.v1.Project">Project</a></td>
                  <td></td>
                  <td><p>The project to update.

The project&#39;s `name` field is used to identify the project to update.
Format: projects/{project} </p></td>
                </tr>
              
                <tr>
                  <td>update_mask</td>
                  <td><a href="#google.protobuf.FieldMask">google.protobuf.FieldMask</a></td>
                  <td></td>
                  <td><p>The list of fields to update. </p></td>
                </tr>
              
                <tr>
                  <td>allow_missing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, and the project is not found, a new project will be created.
In this situation, `update_mask` is ignored. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UpdateWebhookRequest">UpdateWebhookRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>webhook</td>
                  <td><a href="#bytebase.v1.Webhook">Webhook</a></td>
                  <td></td>
                  <td><p>The webhook to modify. </p></td>
                </tr>
              
                <tr>
                  <td>update_mask</td>
                  <td><a href="#google.protobuf.FieldMask">google.protobuf.FieldMask</a></td>
                  <td></td>
                  <td><p>The list of fields to update. </p></td>
                </tr>
              
                <tr>
                  <td>allow_missing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, and the webhook is not found, a new webhook will be created.
In this situation, `update_mask` is ignored. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Webhook">Webhook</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>name is the name of the webhook, generated by the server.
format: projects/{project}/webhooks/{webhook} </p></td>
                </tr>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.Webhook.Type">Webhook.Type</a></td>
                  <td></td>
                  <td><p>type is the type of the webhook. </p></td>
                </tr>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>title is the title of the webhook. </p></td>
                </tr>
              
                <tr>
                  <td>url</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>url is the url of the webhook, should be unique within the project. </p></td>
                </tr>
              
                <tr>
                  <td>direct_message</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>if direct_message is set, the notification is sent directly
to the persons and url will be ignored.
IM integration setting should be set for this function to work. </p></td>
                </tr>
              
                <tr>
                  <td>notification_types</td>
                  <td><a href="#bytebase.v1.Activity.Type">Activity.Type</a></td>
                  <td>repeated</td>
                  <td><p>notification_types is the list of activities types that the webhook is interested in.
Bytebase will only send notifications to the webhook if the activity type is in the list.
It should not be empty, and should be a subset of the following:
- ISSUE_CREATE
- ISSUE_COMMENT_CREATE
- ISSUE_FIELD_UPDATE
- ISSUE_STATUS_UPDATE
- ISSUE_APPROVAL_NOTIFY
- ISSUE_PIPELINE_STAGE_STATUS_UPDATE
- ISSUE_PIPELINE_TASK_RUN_STATUS_UPDATE
- NOTIFY_ISSUE_APPROVED
- NOTIFY_PIPELINE_ROLLOUT </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.Activity.Type">Activity.Type</h3>
        <p>Activity type enumeration.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified type.</p></td>
              </tr>
            
              <tr>
                <td>NOTIFY_ISSUE_APPROVED</td>
                <td>23</td>
                <td><p>Notifications via webhooks.

NOTIFY_ISSUE_APPROVED represents the issue approved notification.</p></td>
              </tr>
            
              <tr>
                <td>NOTIFY_PIPELINE_ROLLOUT</td>
                <td>24</td>
                <td><p>NOTIFY_PIPELINE_ROLLOUT represents the pipeline rollout notification.</p></td>
              </tr>
            
              <tr>
                <td>ISSUE_CREATE</td>
                <td>1</td>
                <td><p>Issue related activity types.

ISSUE_CREATE represents creating an issue.</p></td>
              </tr>
            
              <tr>
                <td>ISSUE_COMMENT_CREATE</td>
                <td>2</td>
                <td><p>ISSUE_COMMENT_CREATE represents commenting on an issue.</p></td>
              </tr>
            
              <tr>
                <td>ISSUE_FIELD_UPDATE</td>
                <td>3</td>
                <td><p>ISSUE_FIELD_UPDATE represents updating the issue field, likes title, description, etc.</p></td>
              </tr>
            
              <tr>
                <td>ISSUE_STATUS_UPDATE</td>
                <td>4</td>
                <td><p>ISSUE_STATUS_UPDATE represents the issue status change, including OPEN, CLOSE, CANCEL fow now.</p></td>
              </tr>
            
              <tr>
                <td>ISSUE_APPROVAL_NOTIFY</td>
                <td>21</td>
                <td><p>ISSUE_APPROVAL_NOTIFY is the type for notifying issue approval.</p></td>
              </tr>
            
              <tr>
                <td>ISSUE_PIPELINE_STAGE_STATUS_UPDATE</td>
                <td>5</td>
                <td><p>ISSUE_PIPELINE_STAGE_STATUS_UPDATE represents the pipeline stage status change, including BEGIN, END for now.</p></td>
              </tr>
            
              <tr>
                <td>ISSUE_PIPELINE_TASK_RUN_STATUS_UPDATE</td>
                <td>22</td>
                <td><p>ISSUE_PIPELINE_TASK_RUN_STATUS_UPDATE represents the pipeline task run status change, including PENDING, RUNNING, DONE, FAILED, CANCELED.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.Webhook.Type">Webhook.Type</h3>
        <p>Webhook integration type.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified type.</p></td>
              </tr>
            
              <tr>
                <td>SLACK</td>
                <td>1</td>
                <td><p>Slack integration.</p></td>
              </tr>
            
              <tr>
                <td>DISCORD</td>
                <td>2</td>
                <td><p>Discord integration.</p></td>
              </tr>
            
              <tr>
                <td>TEAMS</td>
                <td>3</td>
                <td><p>Microsoft Teams integration.</p></td>
              </tr>
            
              <tr>
                <td>DINGTALK</td>
                <td>4</td>
                <td><p>DingTalk integration.</p></td>
              </tr>
            
              <tr>
                <td>FEISHU</td>
                <td>5</td>
                <td><p>Feishu integration.</p></td>
              </tr>
            
              <tr>
                <td>WECOM</td>
                <td>6</td>
                <td><p>WeCom (WeChat Work) integration.</p></td>
              </tr>
            
              <tr>
                <td>LARK</td>
                <td>8</td>
                <td><p>Lark integration.</p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
        <h3 id="bytebase.v1.ProjectService">ProjectService</h3>
        <p>ProjectService manages projects that group databases and changes.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>GetProject</td>
                <td><a href="#bytebase.v1.GetProjectRequest">GetProjectRequest</a></td>
                <td><a href="#bytebase.v1.Project">Project</a></td>
                <td><p>GetProject retrieves a project by name.
Users with &#34;bb.projects.get&#34; permission on the workspace or the project owner can access this method.
Permissions required: bb.projects.get</p></td>
              </tr>
            
              <tr>
                <td>ListProjects</td>
                <td><a href="#bytebase.v1.ListProjectsRequest">ListProjectsRequest</a></td>
                <td><a href="#bytebase.v1.ListProjectsResponse">ListProjectsResponse</a></td>
                <td><p>Lists all projects in the workspace with optional filtering.
Permissions required: bb.projects.list</p></td>
              </tr>
            
              <tr>
                <td>SearchProjects</td>
                <td><a href="#bytebase.v1.SearchProjectsRequest">SearchProjectsRequest</a></td>
                <td><a href="#bytebase.v1.SearchProjectsResponse">SearchProjectsResponse</a></td>
                <td><p>Searches for projects with advanced filtering capabilities.
Permissions required: bb.projects.get (or project-level bb.projects.get for specific projects)</p></td>
              </tr>
            
              <tr>
                <td>CreateProject</td>
                <td><a href="#bytebase.v1.CreateProjectRequest">CreateProjectRequest</a></td>
                <td><a href="#bytebase.v1.Project">Project</a></td>
                <td><p>Creates a new project in the workspace.
Permissions required: bb.projects.create</p></td>
              </tr>
            
              <tr>
                <td>UpdateProject</td>
                <td><a href="#bytebase.v1.UpdateProjectRequest">UpdateProjectRequest</a></td>
                <td><a href="#bytebase.v1.Project">Project</a></td>
                <td><p>Updates an existing project&#39;s properties.
Permissions required: bb.projects.update</p></td>
              </tr>
            
              <tr>
                <td>DeleteProject</td>
                <td><a href="#bytebase.v1.DeleteProjectRequest">DeleteProjectRequest</a></td>
                <td><a href="#google.protobuf.Empty">.google.protobuf.Empty</a></td>
                <td><p>Deletes (soft-delete or purge) a project.
Permissions required: bb.projects.delete</p></td>
              </tr>
            
              <tr>
                <td>UndeleteProject</td>
                <td><a href="#bytebase.v1.UndeleteProjectRequest">UndeleteProjectRequest</a></td>
                <td><a href="#bytebase.v1.Project">Project</a></td>
                <td><p>Restores a soft-deleted project.
Permissions required: bb.projects.undelete</p></td>
              </tr>
            
              <tr>
                <td>BatchDeleteProjects</td>
                <td><a href="#bytebase.v1.BatchDeleteProjectsRequest">BatchDeleteProjectsRequest</a></td>
                <td><a href="#google.protobuf.Empty">.google.protobuf.Empty</a></td>
                <td><p>Deletes multiple projects in a single operation.
Permissions required: bb.projects.delete</p></td>
              </tr>
            
              <tr>
                <td>GetIamPolicy</td>
                <td><a href="#bytebase.v1.GetIamPolicyRequest">GetIamPolicyRequest</a></td>
                <td><a href="#bytebase.v1.IamPolicy">IamPolicy</a></td>
                <td><p>Retrieves the IAM policy for a project.
Permissions required: bb.projects.getIamPolicy</p></td>
              </tr>
            
              <tr>
                <td>BatchGetIamPolicy</td>
                <td><a href="#bytebase.v1.BatchGetIamPolicyRequest">BatchGetIamPolicyRequest</a></td>
                <td><a href="#bytebase.v1.BatchGetIamPolicyResponse">BatchGetIamPolicyResponse</a></td>
                <td><p>Deprecated. No permission check implemented.
Permissions required: None</p></td>
              </tr>
            
              <tr>
                <td>SetIamPolicy</td>
                <td><a href="#bytebase.v1.SetIamPolicyRequest">SetIamPolicyRequest</a></td>
                <td><a href="#bytebase.v1.IamPolicy">IamPolicy</a></td>
                <td><p>Sets the IAM policy for a project.
Permissions required: bb.projects.setIamPolicy</p></td>
              </tr>
            
              <tr>
                <td>AddWebhook</td>
                <td><a href="#bytebase.v1.AddWebhookRequest">AddWebhookRequest</a></td>
                <td><a href="#bytebase.v1.Project">Project</a></td>
                <td><p>Adds a webhook to a project for notifications.
Permissions required: bb.projects.update</p></td>
              </tr>
            
              <tr>
                <td>UpdateWebhook</td>
                <td><a href="#bytebase.v1.UpdateWebhookRequest">UpdateWebhookRequest</a></td>
                <td><a href="#bytebase.v1.Project">Project</a></td>
                <td><p>Updates an existing webhook configuration.
Permissions required: bb.projects.update</p></td>
              </tr>
            
              <tr>
                <td>RemoveWebhook</td>
                <td><a href="#bytebase.v1.RemoveWebhookRequest">RemoveWebhookRequest</a></td>
                <td><a href="#bytebase.v1.Project">Project</a></td>
                <td><p>Removes a webhook from a project.
Permissions required: bb.projects.update</p></td>
              </tr>
            
              <tr>
                <td>TestWebhook</td>
                <td><a href="#bytebase.v1.TestWebhookRequest">TestWebhookRequest</a></td>
                <td><a href="#bytebase.v1.TestWebhookResponse">TestWebhookResponse</a></td>
                <td><p>Tests a webhook by sending a test notification.
Permissions required: bb.projects.update</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>GetProject</td>
                <td>GET</td>
                <td>/v1/{name=projects/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>ListProjects</td>
                <td>GET</td>
                <td>/v1/projects</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>SearchProjects</td>
                <td>POST</td>
                <td>/v1/projects:search</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>CreateProject</td>
                <td>POST</td>
                <td>/v1/projects</td>
                <td>project</td>
              </tr>
              
            
              
              
              <tr>
                <td>UpdateProject</td>
                <td>PATCH</td>
                <td>/v1/{project.name=projects/*}</td>
                <td>project</td>
              </tr>
              
            
              
              
              <tr>
                <td>DeleteProject</td>
                <td>DELETE</td>
                <td>/v1/{name=projects/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>UndeleteProject</td>
                <td>POST</td>
                <td>/v1/{name=projects/*}:undelete</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>BatchDeleteProjects</td>
                <td>POST</td>
                <td>/v1/projects:batchDelete</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>GetIamPolicy</td>
                <td>GET</td>
                <td>/v1/{resource=projects/*}:getIamPolicy</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>BatchGetIamPolicy</td>
                <td>GET</td>
                <td>/v1/{scope=*/*}/iamPolicies:batchGet</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>SetIamPolicy</td>
                <td>POST</td>
                <td>/v1/{resource=projects/*}:setIamPolicy</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>AddWebhook</td>
                <td>POST</td>
                <td>/v1/{project=projects/*}:addWebhook</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>UpdateWebhook</td>
                <td>PATCH</td>
                <td>/v1/{webhook.name=projects/*/webhooks/*}:updateWebhook</td>
                <td>webhook</td>
              </tr>
              
            
              
              
              <tr>
                <td>RemoveWebhook</td>
                <td>POST</td>
                <td>/v1/{webhook.name=projects/*/webhooks/*}:removeWebhook</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>TestWebhook</td>
                <td>POST</td>
                <td>/v1/{project=projects/*}:testWebhook</td>
                <td>*</td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/setting_service.proto">v1/setting_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.AISetting">AISetting</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>enabled</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>provider</td>
                  <td><a href="#bytebase.v1.AISetting.Provider">AISetting.Provider</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>endpoint</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>api_key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>model</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>version</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Algorithm">Algorithm</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>full_mask</td>
                  <td><a href="#bytebase.v1.Algorithm.FullMask">Algorithm.FullMask</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>range_mask</td>
                  <td><a href="#bytebase.v1.Algorithm.RangeMask">Algorithm.RangeMask</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>md5_mask</td>
                  <td><a href="#bytebase.v1.Algorithm.MD5Mask">Algorithm.MD5Mask</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>inner_outer_mask</td>
                  <td><a href="#bytebase.v1.Algorithm.InnerOuterMask">Algorithm.InnerOuterMask</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Algorithm.FullMask">Algorithm.FullMask</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>substitution</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>substitution is the string used to replace the original value, the
max length of the string is 16 bytes. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Algorithm.InnerOuterMask">Algorithm.InnerOuterMask</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>prefix_len</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>suffix_len</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.Algorithm.InnerOuterMask.MaskType">Algorithm.InnerOuterMask.MaskType</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>substitution</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Algorithm.MD5Mask">Algorithm.MD5Mask</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>salt</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>salt is the salt value to generate a different hash that with the word alone. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Algorithm.RangeMask">Algorithm.RangeMask</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>slices</td>
                  <td><a href="#bytebase.v1.Algorithm.RangeMask.Slice">Algorithm.RangeMask.Slice</a></td>
                  <td>repeated</td>
                  <td><p>We store it as a repeated field to face the fact that the original value may have multiple parts should be masked.
But frontend can be started with a single rule easily. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Algorithm.RangeMask.Slice">Algorithm.RangeMask.Slice</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>start</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>start is the start index of the original value, start from 0 and should be less than stop. </p></td>
                </tr>
              
                <tr>
                  <td>end</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>stop is the stop index of the original value, should be less than the length of the original value. </p></td>
                </tr>
              
                <tr>
                  <td>substitution</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>substitution is the string used to replace the OriginalValue[start:end). </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Announcement">Announcement</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>level</td>
                  <td><a href="#bytebase.v1.Announcement.AlertLevel">Announcement.AlertLevel</a></td>
                  <td></td>
                  <td><p>The alert level of announcement </p></td>
                </tr>
              
                <tr>
                  <td>text</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The text of announcement </p></td>
                </tr>
              
                <tr>
                  <td>link</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The optional link, user can follow the link to check extra details </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.AppIMSetting">AppIMSetting</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>settings</td>
                  <td><a href="#bytebase.v1.AppIMSetting.IMSetting">AppIMSetting.IMSetting</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.AppIMSetting.DingTalk">AppIMSetting.DingTalk</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>client_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>client_secret</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>robot_code</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.AppIMSetting.Feishu">AppIMSetting.Feishu</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>app_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>app_secret</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.AppIMSetting.IMSetting">AppIMSetting.IMSetting</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.Webhook.Type">Webhook.Type</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>slack</td>
                  <td><a href="#bytebase.v1.AppIMSetting.Slack">AppIMSetting.Slack</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>feishu</td>
                  <td><a href="#bytebase.v1.AppIMSetting.Feishu">AppIMSetting.Feishu</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>wecom</td>
                  <td><a href="#bytebase.v1.AppIMSetting.Wecom">AppIMSetting.Wecom</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>lark</td>
                  <td><a href="#bytebase.v1.AppIMSetting.Lark">AppIMSetting.Lark</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>dingtalk</td>
                  <td><a href="#bytebase.v1.AppIMSetting.DingTalk">AppIMSetting.DingTalk</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>teams</td>
                  <td><a href="#bytebase.v1.AppIMSetting.Teams">AppIMSetting.Teams</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.AppIMSetting.Lark">AppIMSetting.Lark</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>app_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>app_secret</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.AppIMSetting.Slack">AppIMSetting.Slack</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.AppIMSetting.Teams">AppIMSetting.Teams</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>tenant_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Azure AD tenant ID (Directory ID). </p></td>
                </tr>
              
                <tr>
                  <td>client_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Azure AD application (client) ID. </p></td>
                </tr>
              
                <tr>
                  <td>client_secret</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Azure AD client secret. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.AppIMSetting.Wecom">AppIMSetting.Wecom</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>corp_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>agent_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>secret</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DataClassificationSetting">DataClassificationSetting</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>configs</td>
                  <td><a href="#bytebase.v1.DataClassificationSetting.DataClassificationConfig">DataClassificationSetting.DataClassificationConfig</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DataClassificationSetting.DataClassificationConfig">DataClassificationSetting.DataClassificationConfig</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>id is the uuid for classification. Each project can chose one classification config. </p></td>
                </tr>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>levels</td>
                  <td><a href="#bytebase.v1.DataClassificationSetting.DataClassificationConfig.Level">DataClassificationSetting.DataClassificationConfig.Level</a></td>
                  <td>repeated</td>
                  <td><p>levels is user defined level list for classification.
The order for the level decides its priority. </p></td>
                </tr>
              
                <tr>
                  <td>classification</td>
                  <td><a href="#bytebase.v1.DataClassificationSetting.DataClassificationConfig.ClassificationEntry">DataClassificationSetting.DataClassificationConfig.ClassificationEntry</a></td>
                  <td>repeated</td>
                  <td><p>classification is the id - DataClassification map.
The id should in [0-9]&#43;-[0-9]&#43;-[0-9]&#43; format. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DataClassificationSetting.DataClassificationConfig.ClassificationEntry">DataClassificationSetting.DataClassificationConfig.ClassificationEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#bytebase.v1.DataClassificationSetting.DataClassificationConfig.DataClassification">DataClassificationSetting.DataClassificationConfig.DataClassification</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DataClassificationSetting.DataClassificationConfig.DataClassification">DataClassificationSetting.DataClassificationConfig.DataClassification</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>id is the classification id in [0-9]&#43;-[0-9]&#43;-[0-9]&#43; format. </p></td>
                </tr>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>description</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>level_id</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DataClassificationSetting.DataClassificationConfig.Level">DataClassificationSetting.DataClassificationConfig.Level</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>description</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.EnvironmentSetting">EnvironmentSetting</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>environments</td>
                  <td><a href="#bytebase.v1.EnvironmentSetting.Environment">EnvironmentSetting.Environment</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.EnvironmentSetting.Environment">EnvironmentSetting.Environment</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The resource name of the environment.
Format: environments/{environment}.
Output only. </p></td>
                </tr>
              
                <tr>
                  <td>id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The resource id of the environment.
This value should be 4-63 characters, and valid characters
are /[a-z][0-9]-/. </p></td>
                </tr>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The display name of the environment. </p></td>
                </tr>
              
                <tr>
                  <td>tags</td>
                  <td><a href="#bytebase.v1.EnvironmentSetting.Environment.TagsEntry">EnvironmentSetting.Environment.TagsEntry</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>color</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.EnvironmentSetting.Environment.TagsEntry">EnvironmentSetting.Environment.TagsEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetSettingRequest">GetSettingRequest</h3>
        <p>The request message for getting a setting.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The resource name of the setting. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetSettingResponse">GetSettingResponse</h3>
        <p>The response message for getting a setting.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>setting</td>
                  <td><a href="#bytebase.v1.Setting">Setting</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListSettingsRequest">ListSettingsRequest</h3>
        <p></p>

        

        
      
        <h3 id="bytebase.v1.ListSettingsResponse">ListSettingsResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>settings</td>
                  <td><a href="#bytebase.v1.Setting">Setting</a></td>
                  <td>repeated</td>
                  <td><p>The settings from the specified request. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SemanticTypeSetting">SemanticTypeSetting</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>types</td>
                  <td><a href="#bytebase.v1.SemanticTypeSetting.SemanticType">SemanticTypeSetting.SemanticType</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SemanticTypeSetting.SemanticType">SemanticTypeSetting.SemanticType</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>id is the uuid for semantic type. </p></td>
                </tr>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>the title of the semantic type, it should not be empty. </p></td>
                </tr>
              
                <tr>
                  <td>description</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>the description of the semantic type, it can be empty. </p></td>
                </tr>
              
                <tr>
                  <td>algorithm</td>
                  <td><a href="#bytebase.v1.Algorithm">Algorithm</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>icon</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>icon is the icon for semantic type, it can be emoji or base64 encoded image. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Setting">Setting</h3>
        <p>The schema of setting.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The resource name of the setting.
Format: settings/{setting}
Example: &#34;settings/SEMANTIC_TYPES&#34; </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#bytebase.v1.SettingValue">SettingValue</a></td>
                  <td></td>
                  <td><p>The configuration value of the setting. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SettingValue">SettingValue</h3>
        <p>The data in setting value.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>app_im</td>
                  <td><a href="#bytebase.v1.AppIMSetting">AppIMSetting</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>workspace_profile</td>
                  <td><a href="#bytebase.v1.WorkspaceProfileSetting">WorkspaceProfileSetting</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>workspace_approval</td>
                  <td><a href="#bytebase.v1.WorkspaceApprovalSetting">WorkspaceApprovalSetting</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>data_classification</td>
                  <td><a href="#bytebase.v1.DataClassificationSetting">DataClassificationSetting</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>semantic_type</td>
                  <td><a href="#bytebase.v1.SemanticTypeSetting">SemanticTypeSetting</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>ai</td>
                  <td><a href="#bytebase.v1.AISetting">AISetting</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>environment</td>
                  <td><a href="#bytebase.v1.EnvironmentSetting">EnvironmentSetting</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UpdateSettingRequest">UpdateSettingRequest</h3>
        <p>The request message for updating or creating a setting.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>setting</td>
                  <td><a href="#bytebase.v1.Setting">Setting</a></td>
                  <td></td>
                  <td><p>The setting to update. </p></td>
                </tr>
              
                <tr>
                  <td>validate_only</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>validate_only is a flag to indicate whether to validate the setting value,
server would not persist the setting value if it is true. </p></td>
                </tr>
              
                <tr>
                  <td>allow_missing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>update_mask</td>
                  <td><a href="#google.protobuf.FieldMask">google.protobuf.FieldMask</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.WorkspaceApprovalSetting">WorkspaceApprovalSetting</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>rules</td>
                  <td><a href="#bytebase.v1.WorkspaceApprovalSetting.Rule">WorkspaceApprovalSetting.Rule</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.WorkspaceApprovalSetting.Rule">WorkspaceApprovalSetting.Rule</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>template</td>
                  <td><a href="#bytebase.v1.ApprovalTemplate">ApprovalTemplate</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>condition</td>
                  <td><a href="#google.type.Expr">google.type.Expr</a></td>
                  <td></td>
                  <td><p>The condition that is associated with the rule.
The syntax and semantics of CEL are documented at https://github.com/google/cel-spec

The `source` field filters which rules apply. The `condition` field then evaluates with full context.

All supported variables:
statement.affected_rows: affected row count in the DDL/DML, support &#34;==&#34;, &#34;!=&#34;, &#34;&lt;&#34;, &#34;&lt;=&#34;, &#34;&gt;&#34;, &#34;&gt;=&#34; operations.
statement.table_rows: table row count number, support &#34;==&#34;, &#34;!=&#34;, &#34;&lt;&#34;, &#34;&lt;=&#34;, &#34;&gt;&#34;, &#34;&gt;=&#34; operations.
resource.environment_id: the environment resource id, support &#34;==&#34;, &#34;!=&#34;, &#34;in [xx]&#34;, &#34;!(in [xx])&#34; operations.
resource.project_id: the project resource id, support &#34;==&#34;, &#34;!=&#34;, &#34;in [xx]&#34;, &#34;!(in [xx])&#34;, &#34;contains()&#34;, &#34;matches()&#34;, &#34;startsWith()&#34;, &#34;endsWith()&#34; operations.
resource.db_engine: the database engine type, support &#34;==&#34;, &#34;!=&#34;, &#34;in [xx]&#34;, &#34;!(in [xx])&#34; operations. Check the Engine enum for values.
statement.sql_type: the SQL type, support &#34;==&#34;, &#34;!=&#34;, &#34;in [xx]&#34;, &#34;!(in [xx])&#34; operations.
resource.database_name: the database name, support &#34;==&#34;, &#34;!=&#34;, &#34;in [xx]&#34;, &#34;!(in [xx])&#34;, &#34;contains()&#34;, &#34;matches()&#34;, &#34;startsWith()&#34;, &#34;endsWith()&#34; operations.
resource.schema_name: the schema name, support &#34;==&#34;, &#34;!=&#34;, &#34;in [xx]&#34;, &#34;!(in [xx])&#34;, &#34;contains()&#34;, &#34;matches()&#34;, &#34;startsWith()&#34;, &#34;endsWith()&#34; operations.
resource.table_name: the table name, support &#34;==&#34;, &#34;!=&#34;, &#34;in [xx]&#34;, &#34;!(in [xx])&#34;, &#34;contains()&#34;, &#34;matches()&#34;, &#34;startsWith()&#34;, &#34;endsWith()&#34; operations.
statement.text: the SQL statement, support &#34;contains()&#34;, &#34;matches()&#34;, &#34;startsWith()&#34;, &#34;endsWith()&#34; operations.
request.expiration_days: the role expiration days for the request, support &#34;==&#34;, &#34;!=&#34;, &#34;&lt;&#34;, &#34;&lt;=&#34;, &#34;&gt;&#34;, &#34;&gt;=&#34; operations.
request.role: the request role full name, support &#34;==&#34;, &#34;!=&#34;, &#34;in [xx]&#34;, &#34;!(in [xx])&#34;, &#34;contains()&#34;, &#34;matches()&#34;, &#34;startsWith()&#34;, &#34;endsWith()&#34; operations.

When source is CHANGE_DATABASE, support: statement.*, resource.* (excluding request.*)
When source is CREATE_DATABASE, support: resource.environment_id, resource.project_id, resource.db_engine, resource.database_name
When source is EXPORT_DATA, support: resource.environment_id, resource.project_id, resource.db_engine, resource.database_name, resource.schema_name, resource.table_name
When source is REQUEST_ROLE, support: resource.project_id, request.expiration_days, request.role

For examples:
resource.environment_id == &#34;prod&#34; &amp;&amp; statement.affected_rows &gt;= 100
resource.table_name.matches(&#34;sensitive_.*&#34;) &amp;&amp; resource.db_engine == &#34;MYSQL&#34; </p></td>
                </tr>
              
                <tr>
                  <td>source</td>
                  <td><a href="#bytebase.v1.WorkspaceApprovalSetting.Rule.Source">WorkspaceApprovalSetting.Rule.Source</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.WorkspaceProfileSetting">WorkspaceProfileSetting</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>external_url</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The external URL is used for sso authentication callback. </p></td>
                </tr>
              
                <tr>
                  <td>disallow_signup</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Disallow self-service signup, users can only be invited by the owner. </p></td>
                </tr>
              
                <tr>
                  <td>require_2fa</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Require 2FA for all users. </p></td>
                </tr>
              
                <tr>
                  <td>token_duration</td>
                  <td><a href="#google.protobuf.Duration">google.protobuf.Duration</a></td>
                  <td></td>
                  <td><p>The duration for token. </p></td>
                </tr>
              
                <tr>
                  <td>announcement</td>
                  <td><a href="#bytebase.v1.Announcement">Announcement</a></td>
                  <td></td>
                  <td><p>The setting of custom announcement </p></td>
                </tr>
              
                <tr>
                  <td>maximum_role_expiration</td>
                  <td><a href="#google.protobuf.Duration">google.protobuf.Duration</a></td>
                  <td></td>
                  <td><p>The max duration for role expired. </p></td>
                </tr>
              
                <tr>
                  <td>domains</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The workspace domain, e.g., bytebase.com. </p></td>
                </tr>
              
                <tr>
                  <td>enforce_identity_domain</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Only user and group from the domains can be created and login. </p></td>
                </tr>
              
                <tr>
                  <td>database_change_mode</td>
                  <td><a href="#bytebase.v1.DatabaseChangeMode">DatabaseChangeMode</a></td>
                  <td></td>
                  <td><p>The workspace database change mode. </p></td>
                </tr>
              
                <tr>
                  <td>disallow_password_signin</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether to disallow password signin. (Except workspace admins) </p></td>
                </tr>
              
                <tr>
                  <td>enable_metric_collection</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether to enable metric collection for the workspace. </p></td>
                </tr>
              
                <tr>
                  <td>inactive_session_timeout</td>
                  <td><a href="#google.protobuf.Duration">google.protobuf.Duration</a></td>
                  <td></td>
                  <td><p>The session expiration time if not activity detected for the user. Value &lt;= 0 means no limit. </p></td>
                </tr>
              
                <tr>
                  <td>enable_audit_log_stdout</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether to enable audit logging to stdout in structured JSON format.
Requires TEAM or ENTERPRISE license. </p></td>
                </tr>
              
                <tr>
                  <td>watermark</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether to display watermark on pages.
Requires ENTERPRISE license. </p></td>
                </tr>
              
                <tr>
                  <td>directory_sync_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The token for directory sync authentication. </p></td>
                </tr>
              
                <tr>
                  <td>branding_logo</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The branding logo as a data URI (e.g. data:image/png;base64,...). </p></td>
                </tr>
              
                <tr>
                  <td>password_restriction</td>
                  <td><a href="#bytebase.v1.WorkspaceProfileSetting.PasswordRestriction">WorkspaceProfileSetting.PasswordRestriction</a></td>
                  <td></td>
                  <td><p>Password restriction settings. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.WorkspaceProfileSetting.PasswordRestriction">WorkspaceProfileSetting.PasswordRestriction</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>min_length</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>min_length is the minimum length for password, should no less than 8. </p></td>
                </tr>
              
                <tr>
                  <td>require_number</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>require_number requires the password must contains at least one number. </p></td>
                </tr>
              
                <tr>
                  <td>require_letter</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>require_letter requires the password must contains at least one letter, regardless of upper case or lower case </p></td>
                </tr>
              
                <tr>
                  <td>require_uppercase_letter</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>require_uppercase_letter requires the password must contains at least one upper case letter. </p></td>
                </tr>
              
                <tr>
                  <td>require_special_character</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>require_special_character requires the password must contains at least one special character. </p></td>
                </tr>
              
                <tr>
                  <td>require_reset_password_for_first_login</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>require_reset_password_for_first_login requires users to reset their password after the 1st login. </p></td>
                </tr>
              
                <tr>
                  <td>password_rotation</td>
                  <td><a href="#google.protobuf.Duration">google.protobuf.Duration</a></td>
                  <td></td>
                  <td><p>password_rotation requires users to reset their password after the duration. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.AISetting.Provider">AISetting.Provider</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>PROVIDER_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>OPEN_AI</td>
                <td>1</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>CLAUDE</td>
                <td>2</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>GEMINI</td>
                <td>3</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>AZURE_OPENAI</td>
                <td>4</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.Algorithm.InnerOuterMask.MaskType">Algorithm.InnerOuterMask.MaskType</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>MASK_TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>INNER</td>
                <td>1</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>OUTER</td>
                <td>2</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.Announcement.AlertLevel">Announcement.AlertLevel</h3>
        <p>We support three levels of AlertLevel: INFO, WARNING, and ERROR.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>ALERT_LEVEL_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>INFO</td>
                <td>1</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>WARNING</td>
                <td>2</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>CRITICAL</td>
                <td>3</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.DatabaseChangeMode">DatabaseChangeMode</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>DATABASE_CHANGE_MODE_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>PIPELINE</td>
                <td>1</td>
                <td><p>A more advanced database change process, including custom approval workflows and other advanced features.
Default to this mode.</p></td>
              </tr>
            
              <tr>
                <td>EDITOR</td>
                <td>2</td>
                <td><p>A simple database change process in SQL editor. Users can execute SQL directly.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.Setting.SettingName">Setting.SettingName</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>SETTING_NAME_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>WORKSPACE_PROFILE</td>
                <td>4</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>WORKSPACE_APPROVAL</td>
                <td>5</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>APP_IM</td>
                <td>8</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>AI</td>
                <td>10</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>DATA_CLASSIFICATION</td>
                <td>14</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>SEMANTIC_TYPES</td>
                <td>15</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>ENVIRONMENT</td>
                <td>19</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.WorkspaceApprovalSetting.Rule.Source">WorkspaceApprovalSetting.Rule.Source</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>SOURCE_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>CHANGE_DATABASE</td>
                <td>1</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>CREATE_DATABASE</td>
                <td>2</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>EXPORT_DATA</td>
                <td>3</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>REQUEST_ROLE</td>
                <td>4</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
        <h3 id="bytebase.v1.SettingService">SettingService</h3>
        <p>SettingService manages workspace-level settings and configurations.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>ListSettings</td>
                <td><a href="#bytebase.v1.ListSettingsRequest">ListSettingsRequest</a></td>
                <td><a href="#bytebase.v1.ListSettingsResponse">ListSettingsResponse</a></td>
                <td><p>Lists all workspace settings.
Permissions required: bb.settings.list</p></td>
              </tr>
            
              <tr>
                <td>GetSetting</td>
                <td><a href="#bytebase.v1.GetSettingRequest">GetSettingRequest</a></td>
                <td><a href="#bytebase.v1.Setting">Setting</a></td>
                <td><p>Retrieves a workspace setting by name.
Permissions required: bb.settings.get</p></td>
              </tr>
            
              <tr>
                <td>UpdateSetting</td>
                <td><a href="#bytebase.v1.UpdateSettingRequest">UpdateSettingRequest</a></td>
                <td><a href="#bytebase.v1.Setting">Setting</a></td>
                <td><p>Updates a workspace setting.
Permissions required: bb.settings.set</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>ListSettings</td>
                <td>GET</td>
                <td>/v1/settings</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>GetSetting</td>
                <td>GET</td>
                <td>/v1/{name=settings/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>UpdateSetting</td>
                <td>PATCH</td>
                <td>/v1/{setting.name=settings/*}</td>
                <td>setting</td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/user_service.proto">v1/user_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.BatchGetUsersRequest">BatchGetUsersRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>names</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The user names to retrieve.
Format: users/{user uid or user email} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchGetUsersResponse">BatchGetUsersResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>users</td>
                  <td><a href="#bytebase.v1.User">User</a></td>
                  <td>repeated</td>
                  <td><p>The users from the specified request. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.CreateUserRequest">CreateUserRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>user</td>
                  <td><a href="#bytebase.v1.User">User</a></td>
                  <td></td>
                  <td><p>The user to create. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DeleteUserRequest">DeleteUserRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the user to delete.
Format: users/{user} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetUserRequest">GetUserRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the user to retrieve.
Format: users/{user uid or user email} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListUsersRequest">ListUsersRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>page_size</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of users to return. The service may return fewer than
this value.
If unspecified, at most 10 users will be returned.
The maximum value is 1000; values above 1000 will be coerced to 1000. </p></td>
                </tr>
              
                <tr>
                  <td>page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A page token, received from a previous `ListUsers` call.
Provide this to retrieve the subsequent page.

When paginating, all other parameters provided to `ListUsers` must match
the call that provided the page token. </p></td>
                </tr>
              
                <tr>
                  <td>show_deleted</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Show deleted users if specified. </p></td>
                </tr>
              
                <tr>
                  <td>filter</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Filter is used to filter users returned in the list.
The syntax and semantics of CEL are documented at https://github.com/google/cel-spec

Supported filter:
- name: the user name, support &#34;==&#34; and &#34;.matches()&#34; operator.
- email: the user email, support &#34;==&#34; and &#34;.matches()&#34; operator.
- user_type: the type, check UserType enum for values, support &#34;==&#34;, &#34;in [xx]&#34;, &#34;!(in [xx])&#34; operator.
- state: check State enum for values, support &#34;==&#34; operator.
- project: the project full name in &#34;projects/{id}&#34; format, support &#34;==&#34; operator.

For example:
name == &#34;ed&#34;
name.matches(&#34;ed&#34;)
email == &#34;ed@bytebase.com&#34;
email.matches(&#34;ed&#34;)
user_type == &#34;SERVICE_ACCOUNT&#34;
user_type in [&#34;SERVICE_ACCOUNT&#34;, &#34;USER&#34;]
!(user_type in [&#34;SERVICE_ACCOUNT&#34;, &#34;USER&#34;])
state == &#34;DELETED&#34;
project == &#34;projects/sample-project&#34;
You can combine filter conditions like:
name.matches(&#34;ed&#34;) &amp;&amp; project == &#34;projects/sample-project&#34;
(name == &#34;ed&#34; || email == &#34;ed@bytebase.com&#34;) &amp;&amp; project == &#34;projects/sample-project&#34; </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListUsersResponse">ListUsersResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>users</td>
                  <td><a href="#bytebase.v1.User">User</a></td>
                  <td>repeated</td>
                  <td><p>The users from the specified request. </p></td>
                </tr>
              
                <tr>
                  <td>next_page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A token, which can be sent as `page_token` to retrieve the next page.
If this field is omitted, there are no subsequent pages. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UndeleteUserRequest">UndeleteUserRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the deleted user.
Format: users/{user} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UpdateUserRequest">UpdateUserRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>user</td>
                  <td><a href="#bytebase.v1.User">User</a></td>
                  <td></td>
                  <td><p>The user to update.

The user&#39;s `name` field is used to identify the user to update.
Format: users/{user} </p></td>
                </tr>
              
                <tr>
                  <td>update_mask</td>
                  <td><a href="#google.protobuf.FieldMask">google.protobuf.FieldMask</a></td>
                  <td></td>
                  <td><p>The list of fields to update. </p></td>
                </tr>
              
                <tr>
                  <td>otp_code</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>The otp_code is used to verify the user&#39;s identity by MFA. </p></td>
                </tr>
              
                <tr>
                  <td>regenerate_temp_mfa_secret</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>The regenerate_temp_mfa_secret flag means to regenerate temporary MFA secret for user.
This is used for MFA setup. The temporary MFA secret and recovery codes will be returned in the response. </p></td>
                </tr>
              
                <tr>
                  <td>regenerate_recovery_codes</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>The regenerate_recovery_codes flag means to regenerate recovery codes for user. </p></td>
                </tr>
              
                <tr>
                  <td>allow_missing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, and the user is not found, a new user will be created.
In this situation, `update_mask` is ignored. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.User">User</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the user.
Format: users/{user}. {user} is a system-generated unique ID. </p></td>
                </tr>
              
                <tr>
                  <td>state</td>
                  <td><a href="#bytebase.v1.State">State</a></td>
                  <td></td>
                  <td><p>The lifecycle state of the user account. </p></td>
                </tr>
              
                <tr>
                  <td>email</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The email address of the user, used for login and notifications. </p></td>
                </tr>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The display title or full name of the user. </p></td>
                </tr>
              
                <tr>
                  <td>user_type</td>
                  <td><a href="#bytebase.v1.UserType">UserType</a></td>
                  <td></td>
                  <td><p>The type of user account. </p></td>
                </tr>
              
                <tr>
                  <td>password</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The password for authentication. Only used during user creation or password updates. </p></td>
                </tr>
              
                <tr>
                  <td>service_key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The service key for service account authentication. Only used for service accounts. </p></td>
                </tr>
              
                <tr>
                  <td>mfa_enabled</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>The mfa_enabled flag means if the user has enabled MFA. </p></td>
                </tr>
              
                <tr>
                  <td>temp_otp_secret</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Temporary OTP secret used during MFA setup and regeneration. </p></td>
                </tr>
              
                <tr>
                  <td>temp_recovery_codes</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>Temporary recovery codes used during MFA setup and regeneration. </p></td>
                </tr>
              
                <tr>
                  <td>temp_otp_secret_created_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>Timestamp when temp_otp_secret was created. Used by frontend to show countdown timer. </p></td>
                </tr>
              
                <tr>
                  <td>phone</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Should be a valid E.164 compliant phone number.
Could be empty. </p></td>
                </tr>
              
                <tr>
                  <td>profile</td>
                  <td><a href="#bytebase.v1.User.Profile">User.Profile</a></td>
                  <td></td>
                  <td><p>User profile metadata. </p></td>
                </tr>
              
                <tr>
                  <td>groups</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The groups for the user.
Format: groups/{email} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.User.Profile">User.Profile</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>last_login_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>The last time the user successfully logged in. </p></td>
                </tr>
              
                <tr>
                  <td>last_change_password_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>The last time the user changed their password. </p></td>
                </tr>
              
                <tr>
                  <td>source</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>source means where the user comes from. For now we support Entra ID SCIM sync, so the source could be Entra ID. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.UserType">UserType</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>USER_TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified user type.</p></td>
              </tr>
            
              <tr>
                <td>USER</td>
                <td>1</td>
                <td><p>Regular human user account.</p></td>
              </tr>
            
              <tr>
                <td>SYSTEM_BOT</td>
                <td>2</td>
                <td><p>System-managed bot account for automated operations.</p></td>
              </tr>
            
              <tr>
                <td>SERVICE_ACCOUNT</td>
                <td>3</td>
                <td><p>Service account for API integrations.</p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
        <h3 id="bytebase.v1.UserService">UserService</h3>
        <p>UserService manages user accounts and authentication.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>GetUser</td>
                <td><a href="#bytebase.v1.GetUserRequest">GetUserRequest</a></td>
                <td><a href="#bytebase.v1.User">User</a></td>
                <td><p>Get the user.
Any authenticated user can get the user.
Permissions required: bb.users.get</p></td>
              </tr>
            
              <tr>
                <td>BatchGetUsers</td>
                <td><a href="#bytebase.v1.BatchGetUsersRequest">BatchGetUsersRequest</a></td>
                <td><a href="#bytebase.v1.BatchGetUsersResponse">BatchGetUsersResponse</a></td>
                <td><p>Get the users in batch.
Any authenticated user can batch get users.
Permissions required: bb.users.get</p></td>
              </tr>
            
              <tr>
                <td>GetCurrentUser</td>
                <td><a href="#google.protobuf.Empty">.google.protobuf.Empty</a></td>
                <td><a href="#bytebase.v1.User">User</a></td>
                <td><p>Get the current authenticated user.
Permissions required: None</p></td>
              </tr>
            
              <tr>
                <td>ListUsers</td>
                <td><a href="#bytebase.v1.ListUsersRequest">ListUsersRequest</a></td>
                <td><a href="#bytebase.v1.ListUsersResponse">ListUsersResponse</a></td>
                <td><p>List all users.
Any authenticated user can list users.
Permissions required: bb.users.list</p></td>
              </tr>
            
              <tr>
                <td>CreateUser</td>
                <td><a href="#bytebase.v1.CreateUserRequest">CreateUserRequest</a></td>
                <td><a href="#bytebase.v1.User">User</a></td>
                <td><p>Creates a user. When Disallow Signup is enabled, requires bb.users.create permission; otherwise any user can sign up.
Permissions required: bb.users.create (only when Disallow Signup is enabled)</p></td>
              </tr>
            
              <tr>
                <td>UpdateUser</td>
                <td><a href="#bytebase.v1.UpdateUserRequest">UpdateUserRequest</a></td>
                <td><a href="#bytebase.v1.User">User</a></td>
                <td><p>Updates a user. Users can update their own profile, or users with bb.users.update permission can update any user.
Permissions required: bb.users.update (or self)</p></td>
              </tr>
            
              <tr>
                <td>DeleteUser</td>
                <td><a href="#bytebase.v1.DeleteUserRequest">DeleteUserRequest</a></td>
                <td><a href="#google.protobuf.Empty">.google.protobuf.Empty</a></td>
                <td><p>Deletes a user. Requires bb.users.delete permission with additional validation: the last remaining workspace admin cannot be deleted.
Permissions required: bb.users.delete</p></td>
              </tr>
            
              <tr>
                <td>UndeleteUser</td>
                <td><a href="#bytebase.v1.UndeleteUserRequest">UndeleteUserRequest</a></td>
                <td><a href="#bytebase.v1.User">User</a></td>
                <td><p>Restores a deleted user.
Permissions required: bb.users.undelete</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>GetUser</td>
                <td>GET</td>
                <td>/v1/{name=users/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>BatchGetUsers</td>
                <td>GET</td>
                <td>/v1/users:batchGet</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>GetCurrentUser</td>
                <td>GET</td>
                <td>/v1/users/me</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>ListUsers</td>
                <td>GET</td>
                <td>/v1/users</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>CreateUser</td>
                <td>POST</td>
                <td>/v1/users</td>
                <td>user</td>
              </tr>
              
            
              
              
              <tr>
                <td>UpdateUser</td>
                <td>PATCH</td>
                <td>/v1/{user.name=users/*}</td>
                <td>user</td>
              </tr>
              
            
              
              
              <tr>
                <td>DeleteUser</td>
                <td>DELETE</td>
                <td>/v1/{name=users/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>UndeleteUser</td>
                <td>POST</td>
                <td>/v1/{name=users/*}:undelete</td>
                <td>*</td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/actuator_service.proto">v1/actuator_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.ActuatorInfo">ActuatorInfo</h3>
        <p>System information and configuration for the Bytebase instance.</p><p>Actuator concept is similar to the Spring Boot Actuator.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>version</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The Bytebase server version. </p></td>
                </tr>
              
                <tr>
                  <td>git_commit</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The git commit hash of the build. </p></td>
                </tr>
              
                <tr>
                  <td>readonly</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether the Bytebase instance is running in read-only mode. </p></td>
                </tr>
              
                <tr>
                  <td>saas</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether the Bytebase instance is running in SaaS mode where some features cannot be edited by users. </p></td>
                </tr>
              
                <tr>
                  <td>demo</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether the Bytebase instance is running in demo mode. </p></td>
                </tr>
              
                <tr>
                  <td>host</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The host address of the Bytebase instance. </p></td>
                </tr>
              
                <tr>
                  <td>port</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The port number of the Bytebase instance. </p></td>
                </tr>
              
                <tr>
                  <td>external_url</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The external URL where users or webhook callbacks access Bytebase. </p></td>
                </tr>
              
                <tr>
                  <td>need_admin_setup</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether the Bytebase instance requires initial admin setup. </p></td>
                </tr>
              
                <tr>
                  <td>disallow_signup</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether self-service user signup is disabled. </p></td>
                </tr>
              
                <tr>
                  <td>last_active_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>The last time any API call was made, refreshed on each request. </p></td>
                </tr>
              
                <tr>
                  <td>require_2fa</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether two-factor authentication is required for all users. </p></td>
                </tr>
              
                <tr>
                  <td>workspace_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The unique identifier for the workspace. </p></td>
                </tr>
              
                <tr>
                  <td>debug</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether debug mode is enabled. </p></td>
                </tr>
              
                <tr>
                  <td>unlicensed_features</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>List of features that are not licensed. </p></td>
                </tr>
              
                <tr>
                  <td>disallow_password_signin</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether password-based signin is disabled (except for workspace admins). </p></td>
                </tr>
              
                <tr>
                  <td>password_restriction</td>
                  <td><a href="#bytebase.v1.WorkspaceProfileSetting.PasswordRestriction">WorkspaceProfileSetting.PasswordRestriction</a></td>
                  <td></td>
                  <td><p>Password complexity and restriction requirements. </p></td>
                </tr>
              
                <tr>
                  <td>docker</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether the Bytebase instance is running in Docker. </p></td>
                </tr>
              
                <tr>
                  <td>user_stats</td>
                  <td><a href="#bytebase.v1.ActuatorInfo.StatUser">ActuatorInfo.StatUser</a></td>
                  <td>repeated</td>
                  <td><p>Statistics about users in the system. </p></td>
                </tr>
              
                <tr>
                  <td>activated_instance_count</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The number of activated database instances. </p></td>
                </tr>
              
                <tr>
                  <td>total_instance_count</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The total number of database instances. </p></td>
                </tr>
              
                <tr>
                  <td>enable_sample</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether sample data setup is enabled. </p></td>
                </tr>
              
                <tr>
                  <td>external_url_from_flag</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether the external URL is set via command-line flag (and thus cannot be changed via UI). </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ActuatorInfo.StatUser">ActuatorInfo.StatUser</h3>
        <p>User statistics by type and state.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>user_type</td>
                  <td><a href="#bytebase.v1.UserType">UserType</a></td>
                  <td></td>
                  <td><p>The type of user. </p></td>
                </tr>
              
                <tr>
                  <td>state</td>
                  <td><a href="#bytebase.v1.State">State</a></td>
                  <td></td>
                  <td><p>The state of the user. </p></td>
                </tr>
              
                <tr>
                  <td>count</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The count of users matching this type and state. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DeleteCacheRequest">DeleteCacheRequest</h3>
        <p>Request message for deleting cache.</p>

        

        
      
        <h3 id="bytebase.v1.GetActuatorInfoRequest">GetActuatorInfoRequest</h3>
        <p>Request message for getting actuator information.</p>

        

        
      
        <h3 id="bytebase.v1.GetResourcePackageRequest">GetResourcePackageRequest</h3>
        <p>Request message for getting branding resources.</p>

        

        
      
        <h3 id="bytebase.v1.ResourcePackage">ResourcePackage</h3>
        <p>Custom branding resources for the Bytebase instance.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>logo</td>
                  <td><a href="#bytes">bytes</a></td>
                  <td></td>
                  <td><p>The branding logo. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SetupSampleRequest">SetupSampleRequest</h3>
        <p>Request message for setting up sample data.</p>

        

        
      
        <h3 id="bytebase.v1.UpdateActuatorInfoRequest">UpdateActuatorInfoRequest</h3>
        <p>Request message for updating actuator information.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>actuator</td>
                  <td><a href="#bytebase.v1.ActuatorInfo">ActuatorInfo</a></td>
                  <td></td>
                  <td><p>The actuator to update. </p></td>
                </tr>
              
                <tr>
                  <td>update_mask</td>
                  <td><a href="#google.protobuf.FieldMask">google.protobuf.FieldMask</a></td>
                  <td></td>
                  <td><p>The list of fields to update. </p></td>
                </tr>
              
                <tr>
                  <td>allow_missing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, and the actuator is not found, a new actuator will be created.
In this situation, `update_mask` is ignored. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      

      

      
        <h3 id="bytebase.v1.ActuatorService">ActuatorService</h3>
        <p>ActuatorService manages system health and operational information.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>GetActuatorInfo</td>
                <td><a href="#bytebase.v1.GetActuatorInfoRequest">GetActuatorInfoRequest</a></td>
                <td><a href="#bytebase.v1.ActuatorInfo">ActuatorInfo</a></td>
                <td><p>Gets system information and health status of the Bytebase instance.
Permissions required: None</p></td>
              </tr>
            
              <tr>
                <td>UpdateActuatorInfo</td>
                <td><a href="#bytebase.v1.UpdateActuatorInfoRequest">UpdateActuatorInfoRequest</a></td>
                <td><a href="#bytebase.v1.ActuatorInfo">ActuatorInfo</a></td>
                <td><p>Updates system configuration settings for the Bytebase instance.
Permissions required: bb.settings.set</p></td>
              </tr>
            
              <tr>
                <td>SetupSample</td>
                <td><a href="#bytebase.v1.SetupSampleRequest">SetupSampleRequest</a></td>
                <td><a href="#google.protobuf.Empty">.google.protobuf.Empty</a></td>
                <td><p>Sets up sample data for demonstration and testing purposes.
Permissions required: bb.projects.create</p></td>
              </tr>
            
              <tr>
                <td>DeleteCache</td>
                <td><a href="#bytebase.v1.DeleteCacheRequest">DeleteCacheRequest</a></td>
                <td><a href="#google.protobuf.Empty">.google.protobuf.Empty</a></td>
                <td><p>Clears the system cache to force data refresh.
Permissions required: None</p></td>
              </tr>
            
              <tr>
                <td>GetResourcePackage</td>
                <td><a href="#bytebase.v1.GetResourcePackageRequest">GetResourcePackageRequest</a></td>
                <td><a href="#bytebase.v1.ResourcePackage">ResourcePackage</a></td>
                <td><p>Gets custom branding resources such as logos.
Permissions required: None</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>GetActuatorInfo</td>
                <td>GET</td>
                <td>/v1/actuator/info</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>UpdateActuatorInfo</td>
                <td>PATCH</td>
                <td>/v1/actuator/info</td>
                <td>actuator</td>
              </tr>
              
            
              
              
              <tr>
                <td>SetupSample</td>
                <td>POST</td>
                <td>/v1/actuator:setupSample</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>DeleteCache</td>
                <td>DELETE</td>
                <td>/v1/actuator/cache</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>GetResourcePackage</td>
                <td>GET</td>
                <td>/v1/actuator/resources</td>
                <td></td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/audit_log_service.proto">v1/audit_log_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.AuditData">AuditData</h3>
        <p>Additional audit data specific to certain operations.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>policy_delta</td>
                  <td><a href="#bytebase.v1.PolicyDelta">PolicyDelta</a></td>
                  <td></td>
                  <td><p>Changes to IAM policies. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.AuditLog">AuditLog</h3>
        <p>Audit log entry recording system activity or API call.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the log.
Formats:
- projects/{project}/auditLogs/{uid}
- workspaces/{workspace}/auditLogs/{uid} </p></td>
                </tr>
              
                <tr>
                  <td>create_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>The timestamp when the audit log was created. </p></td>
                </tr>
              
                <tr>
                  <td>user</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The user who performed the action.
Format: users/{email} </p></td>
                </tr>
              
                <tr>
                  <td>method</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The method or action being audited.
For example: /bytebase.v1.SQLService/Query or bb.project.repository.push </p></td>
                </tr>
              
                <tr>
                  <td>severity</td>
                  <td><a href="#bytebase.v1.AuditLog.Severity">AuditLog.Severity</a></td>
                  <td></td>
                  <td><p>The severity level of this audit log entry. </p></td>
                </tr>
              
                <tr>
                  <td>resource</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The resource associated with this audit log. </p></td>
                </tr>
              
                <tr>
                  <td>request</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The request payload in JSON format. </p></td>
                </tr>
              
                <tr>
                  <td>response</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The response payload in JSON format.
Some fields may be omitted if they are too large or contain sensitive information. </p></td>
                </tr>
              
                <tr>
                  <td>status</td>
                  <td><a href="#google.rpc.Status">google.rpc.Status</a></td>
                  <td></td>
                  <td><p>The status of the operation. </p></td>
                </tr>
              
                <tr>
                  <td>latency</td>
                  <td><a href="#google.protobuf.Duration">google.protobuf.Duration</a></td>
                  <td></td>
                  <td><p>The duration of the operation. </p></td>
                </tr>
              
                <tr>
                  <td>service_data</td>
                  <td><a href="#google.protobuf.Any">google.protobuf.Any</a></td>
                  <td></td>
                  <td><p>Service-specific metadata about the request, response, and activities. </p></td>
                </tr>
              
                <tr>
                  <td>request_metadata</td>
                  <td><a href="#bytebase.v1.RequestMetadata">RequestMetadata</a></td>
                  <td></td>
                  <td><p>Metadata about the request context. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ExportAuditLogsRequest">ExportAuditLogsRequest</h3>
        <p>Request message for exporting audit logs.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>filter</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The filter of the log. It should be a valid CEL expression.
Check the filter field in the SearchAuditLogsRequest message. </p></td>
                </tr>
              
                <tr>
                  <td>order_by</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The order by of the log.
Only support order by create_time.
For example:
 - order_by = &#34;create_time asc&#34;
 - order_by = &#34;create_time desc&#34; </p></td>
                </tr>
              
                <tr>
                  <td>format</td>
                  <td><a href="#bytebase.v1.ExportFormat">ExportFormat</a></td>
                  <td></td>
                  <td><p>The export format. </p></td>
                </tr>
              
                <tr>
                  <td>page_size</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of logs to return.
The service may return fewer than this value.
If unspecified, at most 10 log entries will be returned.
The maximum value is 5000; values above 5000 will be coerced to 5000. </p></td>
                </tr>
              
                <tr>
                  <td>page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A page token, received from a previous `ExportAuditLogs` call.
Provide this to retrieve the subsequent page. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ExportAuditLogsResponse">ExportAuditLogsResponse</h3>
        <p>Response message for exporting audit logs.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>content</td>
                  <td><a href="#bytes">bytes</a></td>
                  <td></td>
                  <td><p>The exported audit log content in the requested format. </p></td>
                </tr>
              
                <tr>
                  <td>next_page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A token to retrieve next page of log entities.
Pass this value in the page_token field in the subsequent call
to retrieve the next page of log entities. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.RequestMetadata">RequestMetadata</h3>
        <p>Metadata about the incoming request.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>caller_ip</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The IP address of the request originator. </p></td>
                </tr>
              
                <tr>
                  <td>caller_supplied_user_agent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The user agent string provided by the caller.
This is supplied by the client and is not authenticated. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SearchAuditLogsRequest">SearchAuditLogsRequest</h3>
        <p>Request message for searching audit logs.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>filter</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The filter of the log. It should be a valid CEL expression.
The syntax and semantics of CEL are documented at https://github.com/google/cel-spec

Supported filter:
- method: the API name, can be found in the docs, should start with &#34;/bytebase.v1.&#34; prefix. For example &#34;/bytebase.v1.UserService/CreateUser&#34;. Support &#34;==&#34; operator.
- severity: support &#34;==&#34; operator, check Severity enum in AuditLog message for values.
- user: the actor, should in &#34;users/{email}&#34; format, support &#34;==&#34; operator.
- create_time: support &#34;&gt;=&#34; and &#34;&lt;=&#34; operator.

For example:
 - filter = &#34;method == &#39;/bytebase.v1.SQLService/Query&#39;&#34;
 - filter = &#34;method == &#39;/bytebase.v1.SQLService/Query&#39; &amp;&amp; severity == &#39;ERROR&#39;&#34;
 - filter = &#34;method == &#39;/bytebase.v1.SQLService/Query&#39; &amp;&amp; severity == &#39;ERROR&#39; &amp;&amp; user == &#39;users/bb@bytebase.com&#39;&#34;
 - filter = &#34;method == &#39;/bytebase.v1.SQLService/Query&#39; &amp;&amp; severity == &#39;ERROR&#39; &amp;&amp; create_time &lt;= &#39;2021-01-01T00:00:00Z&#39; &amp;&amp; create_time &gt;= &#39;2020-01-01T00:00:00Z&#39;&#34; </p></td>
                </tr>
              
                <tr>
                  <td>order_by</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The order by of the log.
Only support order by create_time.
For example:
 - order_by = &#34;create_time asc&#34;
 - order_by = &#34;create_time desc&#34; </p></td>
                </tr>
              
                <tr>
                  <td>page_size</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of logs to return.
The service may return fewer than this value.
If unspecified, at most 10 log entries will be returned.
The maximum value is 5000; values above 5000 will be coerced to 5000. </p></td>
                </tr>
              
                <tr>
                  <td>page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A page token, received from a previous `SearchLogs` call.
Provide this to retrieve the subsequent page. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SearchAuditLogsResponse">SearchAuditLogsResponse</h3>
        <p>Response message for searching audit logs.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>audit_logs</td>
                  <td><a href="#bytebase.v1.AuditLog">AuditLog</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>next_page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A token to retrieve next page of log entities.
Pass this value in the page_token field in the subsequent call
to retrieve the next page of log entities. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.AuditLog.Severity">AuditLog.Severity</h3>
        <p>Severity level for audit log entries.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>SEVERITY_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified severity level.</p></td>
              </tr>
            
              <tr>
                <td>DEBUG</td>
                <td>1</td>
                <td><p>Debug-level information.</p></td>
              </tr>
            
              <tr>
                <td>INFO</td>
                <td>2</td>
                <td><p>Informational messages.</p></td>
              </tr>
            
              <tr>
                <td>NOTICE</td>
                <td>3</td>
                <td><p>Notable events.</p></td>
              </tr>
            
              <tr>
                <td>WARNING</td>
                <td>4</td>
                <td><p>Warning conditions.</p></td>
              </tr>
            
              <tr>
                <td>ERROR</td>
                <td>5</td>
                <td><p>Error conditions.</p></td>
              </tr>
            
              <tr>
                <td>CRITICAL</td>
                <td>6</td>
                <td><p>Critical conditions.</p></td>
              </tr>
            
              <tr>
                <td>ALERT</td>
                <td>7</td>
                <td><p>Action must be taken immediately.</p></td>
              </tr>
            
              <tr>
                <td>EMERGENCY</td>
                <td>8</td>
                <td><p>System is unusable.</p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
        <h3 id="bytebase.v1.AuditLogService">AuditLogService</h3>
        <p>AuditLogService manages audit logs for system activities and API calls.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>SearchAuditLogs</td>
                <td><a href="#bytebase.v1.SearchAuditLogsRequest">SearchAuditLogsRequest</a></td>
                <td><a href="#bytebase.v1.SearchAuditLogsResponse">SearchAuditLogsResponse</a></td>
                <td><p>Searches audit logs with optional filtering and pagination.
Permissions required: bb.auditLogs.search</p></td>
              </tr>
            
              <tr>
                <td>ExportAuditLogs</td>
                <td><a href="#bytebase.v1.ExportAuditLogsRequest">ExportAuditLogsRequest</a></td>
                <td><a href="#bytebase.v1.ExportAuditLogsResponse">ExportAuditLogsResponse</a></td>
                <td><p>Exports audit logs in a specified format for external analysis.
Permissions required: bb.auditLogs.export</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>SearchAuditLogs</td>
                <td>POST</td>
                <td>/v1/{parent=projects/*}/auditLogs:search</td>
                <td>*</td>
              </tr>
              
              <tr>
                <td>SearchAuditLogs</td>
                <td>POST</td>
                <td>/v1/auditLogs:search</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>ExportAuditLogs</td>
                <td>POST</td>
                <td>/v1/{parent=projects/*}/auditLogs:export</td>
                <td>*</td>
              </tr>
              
              <tr>
                <td>ExportAuditLogs</td>
                <td>POST</td>
                <td>/v1/auditLogs:export</td>
                <td>*</td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/auth_service.proto">v1/auth_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.IdentityProviderContext">IdentityProviderContext</h3>
        <p>Context for identity provider authentication.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>oauth2_context</td>
                  <td><a href="#bytebase.v1.OAuth2IdentityProviderContext">OAuth2IdentityProviderContext</a></td>
                  <td></td>
                  <td><p>OAuth2 authentication context. </p></td>
                </tr>
              
                <tr>
                  <td>oidc_context</td>
                  <td><a href="#bytebase.v1.OIDCIdentityProviderContext">OIDCIdentityProviderContext</a></td>
                  <td></td>
                  <td><p>OpenID Connect authentication context. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.LoginRequest">LoginRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>email</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>User&#39;s email address. </p></td>
                </tr>
              
                <tr>
                  <td>password</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>User&#39;s password for authentication. </p></td>
                </tr>
              
                <tr>
                  <td>web</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If web is set, we will set access token, refresh token, and user to the cookie. </p></td>
                </tr>
              
                <tr>
                  <td>idp_name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the identity provider.
Format: idps/{idp} </p></td>
                </tr>
              
                <tr>
                  <td>idp_context</td>
                  <td><a href="#bytebase.v1.IdentityProviderContext">IdentityProviderContext</a></td>
                  <td></td>
                  <td><p>The idp_context is using to get the user information from identity provider. </p></td>
                </tr>
              
                <tr>
                  <td>otp_code</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>The otp_code is used to verify the user&#39;s identity by MFA. </p></td>
                </tr>
              
                <tr>
                  <td>recovery_code</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>The recovery_code is used to recovery the user&#39;s identity with MFA. </p></td>
                </tr>
              
                <tr>
                  <td>mfa_temp_token</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>The mfa_temp_token is used to verify the user&#39;s identity by MFA. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.LoginResponse">LoginResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Access token for authenticated requests. </p></td>
                </tr>
              
                <tr>
                  <td>mfa_temp_token</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>Temporary token for MFA verification. </p></td>
                </tr>
              
                <tr>
                  <td>require_reset_password</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether user must reset password before continuing. </p></td>
                </tr>
              
                <tr>
                  <td>user</td>
                  <td><a href="#bytebase.v1.User">User</a></td>
                  <td></td>
                  <td><p>The user from the successful login. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.LogoutRequest">LogoutRequest</h3>
        <p>Request to logout current user session.</p>

        

        
      
        <h3 id="bytebase.v1.OAuth2IdentityProviderContext">OAuth2IdentityProviderContext</h3>
        <p>OAuth2 authentication context.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>code</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Authorization code from OAuth2 provider. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.OIDCIdentityProviderContext">OIDCIdentityProviderContext</h3>
        <p>OpenID Connect authentication context.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>code</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Authorization code from OIDC provider. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      

      

      
        <h3 id="bytebase.v1.AuthService">AuthService</h3>
        <p>AuthService handles user authentication operations.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>Login</td>
                <td><a href="#bytebase.v1.LoginRequest">LoginRequest</a></td>
                <td><a href="#bytebase.v1.LoginResponse">LoginResponse</a></td>
                <td><p>Authenticates a user and returns access tokens.
Permissions required: None</p></td>
              </tr>
            
              <tr>
                <td>Logout</td>
                <td><a href="#bytebase.v1.LogoutRequest">LogoutRequest</a></td>
                <td><a href="#google.protobuf.Empty">.google.protobuf.Empty</a></td>
                <td><p>Logs out the current user session.
Permissions required: None</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>Login</td>
                <td>POST</td>
                <td>/v1/auth/login</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>Logout</td>
                <td>POST</td>
                <td>/v1/auth/logout</td>
                <td>*</td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/cel_service.proto">v1/cel_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.BatchDeparseRequest">BatchDeparseRequest</h3>
        <p>Request message for batch deparsing CEL expressions.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>expressions</td>
                  <td><a href="#google.api.expr.v1alpha1.Expr">google.api.expr.v1alpha1.Expr</a></td>
                  <td>repeated</td>
                  <td><p>The CEL expression ASTs to deparse. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchDeparseResponse">BatchDeparseResponse</h3>
        <p>Response message for batch deparsing CEL expressions.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>expressions</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The deparsed CEL expressions as strings. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchParseRequest">BatchParseRequest</h3>
        <p>Request message for batch parsing CEL expressions.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>expressions</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The CEL expression strings to parse. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchParseResponse">BatchParseResponse</h3>
        <p>Response message for batch parsing CEL expressions.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>expressions</td>
                  <td><a href="#google.api.expr.v1alpha1.Expr">google.api.expr.v1alpha1.Expr</a></td>
                  <td>repeated</td>
                  <td><p>The parsed CEL expressions as AST. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      

      

      
        <h3 id="bytebase.v1.CelService">CelService</h3>
        <p>CelService manages CEL (Common Expression Language) parsing and formatting operations.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>BatchParse</td>
                <td><a href="#bytebase.v1.BatchParseRequest">BatchParseRequest</a></td>
                <td><a href="#bytebase.v1.BatchParseResponse">BatchParseResponse</a></td>
                <td><p>Parses multiple CEL expression strings into AST representations.
Permissions required: None</p></td>
              </tr>
            
              <tr>
                <td>BatchDeparse</td>
                <td><a href="#bytebase.v1.BatchDeparseRequest">BatchDeparseRequest</a></td>
                <td><a href="#bytebase.v1.BatchDeparseResponse">BatchDeparseResponse</a></td>
                <td><p>Converts multiple CEL AST representations back into expression strings.
Permissions required: None</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>BatchParse</td>
                <td>POST</td>
                <td>/v1/cel/batchParse</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>BatchDeparse</td>
                <td>POST</td>
                <td>/v1/cel/batchDeparse</td>
                <td>*</td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/database_catalog_service.proto">v1/database_catalog_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.ColumnCatalog">ColumnCatalog</h3>
        <p>Column metadata within a table.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The column name. </p></td>
                </tr>
              
                <tr>
                  <td>semantic_type</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The semantic type describing the data purpose. </p></td>
                </tr>
              
                <tr>
                  <td>labels</td>
                  <td><a href="#bytebase.v1.ColumnCatalog.LabelsEntry">ColumnCatalog.LabelsEntry</a></td>
                  <td>repeated</td>
                  <td><p>User-defined labels for this column. </p></td>
                </tr>
              
                <tr>
                  <td>classification</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The data classification level for this column. </p></td>
                </tr>
              
                <tr>
                  <td>object_schema</td>
                  <td><a href="#bytebase.v1.ObjectSchema">ObjectSchema</a></td>
                  <td>optional</td>
                  <td><p>Object schema for complex column types like JSON. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ColumnCatalog.LabelsEntry">ColumnCatalog.LabelsEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DatabaseCatalog">DatabaseCatalog</h3>
        <p>Catalog metadata for a database including schemas, tables, and columns.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the database catalog.
Format: instances/{instance}/databases/{database}/catalog </p></td>
                </tr>
              
                <tr>
                  <td>schemas</td>
                  <td><a href="#bytebase.v1.SchemaCatalog">SchemaCatalog</a></td>
                  <td>repeated</td>
                  <td><p>The schemas in the database. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetDatabaseCatalogRequest">GetDatabaseCatalogRequest</h3>
        <p>Request message for getting a database catalog.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the database catalog to retrieve.
Format: instances/{instance}/databases/{database}/catalog </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ObjectSchema">ObjectSchema</h3>
        <p>Schema definition for object-type columns.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.ObjectSchema.Type">ObjectSchema.Type</a></td>
                  <td></td>
                  <td><p>The data type of this object. </p></td>
                </tr>
              
                <tr>
                  <td>struct_kind</td>
                  <td><a href="#bytebase.v1.ObjectSchema.StructKind">ObjectSchema.StructKind</a></td>
                  <td></td>
                  <td><p>Struct schema. </p></td>
                </tr>
              
                <tr>
                  <td>array_kind</td>
                  <td><a href="#bytebase.v1.ObjectSchema.ArrayKind">ObjectSchema.ArrayKind</a></td>
                  <td></td>
                  <td><p>Array schema. </p></td>
                </tr>
              
                <tr>
                  <td>semantic_type</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The semantic type of this object. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ObjectSchema.ArrayKind">ObjectSchema.ArrayKind</h3>
        <p>Array type with element schema.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>kind</td>
                  <td><a href="#bytebase.v1.ObjectSchema">ObjectSchema</a></td>
                  <td></td>
                  <td><p>The schema of array elements. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ObjectSchema.StructKind">ObjectSchema.StructKind</h3>
        <p>Structure type with named properties.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>properties</td>
                  <td><a href="#bytebase.v1.ObjectSchema.StructKind.PropertiesEntry">ObjectSchema.StructKind.PropertiesEntry</a></td>
                  <td>repeated</td>
                  <td><p>Properties of the struct. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ObjectSchema.StructKind.PropertiesEntry">ObjectSchema.StructKind.PropertiesEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#bytebase.v1.ObjectSchema">ObjectSchema</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SchemaCatalog">SchemaCatalog</h3>
        <p>Schema metadata within a database.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The schema name. </p></td>
                </tr>
              
                <tr>
                  <td>tables</td>
                  <td><a href="#bytebase.v1.TableCatalog">TableCatalog</a></td>
                  <td>repeated</td>
                  <td><p>The tables in the schema. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TableCatalog">TableCatalog</h3>
        <p>Table metadata within a schema.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The table name. </p></td>
                </tr>
              
                <tr>
                  <td>columns</td>
                  <td><a href="#bytebase.v1.TableCatalog.Columns">TableCatalog.Columns</a></td>
                  <td></td>
                  <td><p>Regular table columns. </p></td>
                </tr>
              
                <tr>
                  <td>object_schema</td>
                  <td><a href="#bytebase.v1.ObjectSchema">ObjectSchema</a></td>
                  <td></td>
                  <td><p>Object schema for JSON/XML columns. </p></td>
                </tr>
              
                <tr>
                  <td>classification</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The data classification level for this table. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TableCatalog.Columns">TableCatalog.Columns</h3>
        <p>Column list for regular tables.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>columns</td>
                  <td><a href="#bytebase.v1.ColumnCatalog">ColumnCatalog</a></td>
                  <td>repeated</td>
                  <td><p>The columns in the table. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UpdateDatabaseCatalogRequest">UpdateDatabaseCatalogRequest</h3>
        <p>Request message for updating a database catalog.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>catalog</td>
                  <td><a href="#bytebase.v1.DatabaseCatalog">DatabaseCatalog</a></td>
                  <td></td>
                  <td><p>The database catalog to update.

The catalog&#39;s `name` field is used to identify the database catalog to update.
Format: instances/{instance}/databases/{database}/catalog </p></td>
                </tr>
              
                <tr>
                  <td>allow_missing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, and the database catalog is not found, a new database catalog will be created.
In this situation, `update_mask` is ignored. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.ObjectSchema.Type">ObjectSchema.Type</h3>
        <p>Object schema data types.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified type.</p></td>
              </tr>
            
              <tr>
                <td>STRING</td>
                <td>1</td>
                <td><p>String type.</p></td>
              </tr>
            
              <tr>
                <td>NUMBER</td>
                <td>2</td>
                <td><p>Number type.</p></td>
              </tr>
            
              <tr>
                <td>BOOLEAN</td>
                <td>3</td>
                <td><p>Boolean type.</p></td>
              </tr>
            
              <tr>
                <td>OBJECT</td>
                <td>4</td>
                <td><p>Object/struct type.</p></td>
              </tr>
            
              <tr>
                <td>ARRAY</td>
                <td>5</td>
                <td><p>Array type.</p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
        <h3 id="bytebase.v1.DatabaseCatalogService">DatabaseCatalogService</h3>
        <p>DatabaseCatalogService manages database schema metadata and classification.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>GetDatabaseCatalog</td>
                <td><a href="#bytebase.v1.GetDatabaseCatalogRequest">GetDatabaseCatalogRequest</a></td>
                <td><a href="#bytebase.v1.DatabaseCatalog">DatabaseCatalog</a></td>
                <td><p>Gets the catalog metadata for a database.
Permissions required: bb.databaseCatalogs.get</p></td>
              </tr>
            
              <tr>
                <td>UpdateDatabaseCatalog</td>
                <td><a href="#bytebase.v1.UpdateDatabaseCatalogRequest">UpdateDatabaseCatalogRequest</a></td>
                <td><a href="#bytebase.v1.DatabaseCatalog">DatabaseCatalog</a></td>
                <td><p>Updates catalog metadata such as classifications and labels.
Permissions required: bb.databaseCatalogs.update</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>GetDatabaseCatalog</td>
                <td>GET</td>
                <td>/v1/{name=instances/*/databases/*/catalog}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>UpdateDatabaseCatalog</td>
                <td>PATCH</td>
                <td>/v1/{catalog.name=instances/*/databases/*/catalog}</td>
                <td>catalog</td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/database_group_service.proto">v1/database_group_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.CreateDatabaseGroupRequest">CreateDatabaseGroupRequest</h3>
        <p>Request message for creating a database group.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent resource where this database group will be created.
Format: projects/{project} </p></td>
                </tr>
              
                <tr>
                  <td>database_group</td>
                  <td><a href="#bytebase.v1.DatabaseGroup">DatabaseGroup</a></td>
                  <td></td>
                  <td><p>The database group to create. </p></td>
                </tr>
              
                <tr>
                  <td>database_group_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The ID to use for the database group, which will become the final component of
the database group&#39;s resource name.

This value should be 4-63 characters, and valid characters
are /[a-z][0-9]-/. </p></td>
                </tr>
              
                <tr>
                  <td>validate_only</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set, validate the create request and preview the full database group response, but do not actually create it. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DatabaseGroup">DatabaseGroup</h3>
        <p>A group of databases matched by expressions.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the database group.
Format: projects/{project}/databaseGroups/{databaseGroup} </p></td>
                </tr>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The short name used in actual databases specified by users. </p></td>
                </tr>
              
                <tr>
                  <td>database_expr</td>
                  <td><a href="#google.type.Expr">google.type.Expr</a></td>
                  <td></td>
                  <td><p>The condition that is associated with this database group.
The syntax and semantics of CEL are documented at https://github.com/google/cel-spec

Support variables:
resource.environment_id: the environment resource id. Support &#34;==&#34;, &#34;!=&#34;, &#34;in [XX]&#34;, &#34;!(in [xx])&#34; operations.
resource.instance_id: the instance resource id. Support &#34;==&#34;, &#34;!=&#34;, &#34;in [XX]&#34;, &#34;!(in [xx])&#34;, &#34;contains&#34;, &#34;matches&#34;, &#34;startsWith&#34;, &#34;endsWith&#34; operations.
resource.database_name: the database name. Support &#34;==&#34;, &#34;!=&#34;, &#34;in [XX]&#34;, &#34;!(in [xx])&#34;, &#34;contains&#34;, &#34;matches&#34;, &#34;startsWith&#34;, &#34;endsWith&#34; operations.
resource.database_labels: the database labels. Support map access operations.
All variables should join with &#34;&amp;&amp;&#34; condition.

For example:
resource.environment_id == &#34;test&#34; &amp;&amp; resource.database_name.startsWith(&#34;sample_&#34;)
resource.database_labels[&#34;tenant&#34;] == &#34;tenant1&#34; </p></td>
                </tr>
              
                <tr>
                  <td>matched_databases</td>
                  <td><a href="#bytebase.v1.DatabaseGroup.Database">DatabaseGroup.Database</a></td>
                  <td>repeated</td>
                  <td><p>The list of databases that match the database group condition. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DatabaseGroup.Database">DatabaseGroup.Database</h3>
        <p>A database within a database group.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The resource name of the database.
Format: instances/{instance}/databases/{database} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DeleteDatabaseGroupRequest">DeleteDatabaseGroupRequest</h3>
        <p>Request message for deleting a database group.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the database group to delete.
Format: projects/{project}/databaseGroups/{databaseGroup} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetDatabaseGroupRequest">GetDatabaseGroupRequest</h3>
        <p>Request message for getting a database group.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the database group to retrieve.
Format: projects/{project}/databaseGroups/{databaseGroup} </p></td>
                </tr>
              
                <tr>
                  <td>view</td>
                  <td><a href="#bytebase.v1.DatabaseGroupView">DatabaseGroupView</a></td>
                  <td></td>
                  <td><p>The view to return. Defaults to DATABASE_GROUP_VIEW_BASIC. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListDatabaseGroupsRequest">ListDatabaseGroupsRequest</h3>
        <p>Request message for listing database groups.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent resource whose database groups are to be listed.
Format: projects/{project} </p></td>
                </tr>
              
                <tr>
                  <td>view</td>
                  <td><a href="#bytebase.v1.DatabaseGroupView">DatabaseGroupView</a></td>
                  <td></td>
                  <td><p>The view to return. Defaults to DATABASE_GROUP_VIEW_BASIC. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListDatabaseGroupsResponse">ListDatabaseGroupsResponse</h3>
        <p>Response message for listing database groups.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>database_groups</td>
                  <td><a href="#bytebase.v1.DatabaseGroup">DatabaseGroup</a></td>
                  <td>repeated</td>
                  <td><p>The database groups from the specified request. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UpdateDatabaseGroupRequest">UpdateDatabaseGroupRequest</h3>
        <p>Request message for updating a database group.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>database_group</td>
                  <td><a href="#bytebase.v1.DatabaseGroup">DatabaseGroup</a></td>
                  <td></td>
                  <td><p>The database group to update.

The database group&#39;s `name` field is used to identify the database group to update.
Format: projects/{project}/databaseGroups/{databaseGroup} </p></td>
                </tr>
              
                <tr>
                  <td>update_mask</td>
                  <td><a href="#google.protobuf.FieldMask">google.protobuf.FieldMask</a></td>
                  <td></td>
                  <td><p>The list of fields to update. </p></td>
                </tr>
              
                <tr>
                  <td>allow_missing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, and the database group is not found, a new database group will be created.
In this situation, `update_mask` is ignored. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.DatabaseGroupView">DatabaseGroupView</h3>
        <p>View options for database group responses.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>DATABASE_GROUP_VIEW_UNSPECIFIED</td>
                <td>0</td>
                <td><p>The default / unset value.
The API will default to the BASIC view.</p></td>
              </tr>
            
              <tr>
                <td>DATABASE_GROUP_VIEW_BASIC</td>
                <td>1</td>
                <td><p>Include basic information about the database group, but exclude the list of matched databases and unmatched databases.</p></td>
              </tr>
            
              <tr>
                <td>DATABASE_GROUP_VIEW_FULL</td>
                <td>2</td>
                <td><p>Include everything.</p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
        <h3 id="bytebase.v1.DatabaseGroupService">DatabaseGroupService</h3>
        <p>DatabaseGroupService manages database groups for organizing databases by criteria.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>ListDatabaseGroups</td>
                <td><a href="#bytebase.v1.ListDatabaseGroupsRequest">ListDatabaseGroupsRequest</a></td>
                <td><a href="#bytebase.v1.ListDatabaseGroupsResponse">ListDatabaseGroupsResponse</a></td>
                <td><p>Lists database groups in a project.
Permissions required: bb.databaseGroups.list</p></td>
              </tr>
            
              <tr>
                <td>GetDatabaseGroup</td>
                <td><a href="#bytebase.v1.GetDatabaseGroupRequest">GetDatabaseGroupRequest</a></td>
                <td><a href="#bytebase.v1.DatabaseGroup">DatabaseGroup</a></td>
                <td><p>Gets a database group by name.
Permissions required: bb.databaseGroups.get</p></td>
              </tr>
            
              <tr>
                <td>CreateDatabaseGroup</td>
                <td><a href="#bytebase.v1.CreateDatabaseGroupRequest">CreateDatabaseGroupRequest</a></td>
                <td><a href="#bytebase.v1.DatabaseGroup">DatabaseGroup</a></td>
                <td><p>Creates a new database group.
Permissions required: bb.databaseGroups.create</p></td>
              </tr>
            
              <tr>
                <td>UpdateDatabaseGroup</td>
                <td><a href="#bytebase.v1.UpdateDatabaseGroupRequest">UpdateDatabaseGroupRequest</a></td>
                <td><a href="#bytebase.v1.DatabaseGroup">DatabaseGroup</a></td>
                <td><p>Updates a database group.
Permissions required: bb.databaseGroups.update
When allow_missing=true, also requires: bb.databaseGroups.create</p></td>
              </tr>
            
              <tr>
                <td>DeleteDatabaseGroup</td>
                <td><a href="#bytebase.v1.DeleteDatabaseGroupRequest">DeleteDatabaseGroupRequest</a></td>
                <td><a href="#google.protobuf.Empty">.google.protobuf.Empty</a></td>
                <td><p>Deletes a database group.
Permissions required: bb.databaseGroups.delete</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>ListDatabaseGroups</td>
                <td>GET</td>
                <td>/v1/{parent=projects/*}/databaseGroups</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>GetDatabaseGroup</td>
                <td>GET</td>
                <td>/v1/{name=projects/*/databaseGroups/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>CreateDatabaseGroup</td>
                <td>POST</td>
                <td>/v1/{parent=projects/*}/databaseGroups</td>
                <td>database_group</td>
              </tr>
              
            
              
              
              <tr>
                <td>UpdateDatabaseGroup</td>
                <td>PATCH</td>
                <td>/v1/{database_group.name=projects/*/databaseGroups/*}</td>
                <td>database_group</td>
              </tr>
              
            
              
              
              <tr>
                <td>DeleteDatabaseGroup</td>
                <td>DELETE</td>
                <td>/v1/{name=projects/*/databaseGroups/*}</td>
                <td></td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/instance_role_service.proto">v1/instance_role_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.GetInstanceRoleRequest">GetInstanceRoleRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the role to retrieve.
Format: instances/{instance}/roles/{role name}
The role name is the unique name for the role. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.InstanceRole">InstanceRole</h3>
        <p>InstanceRole is the API message for instance role.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the role.
Format: instances/{instance}/roles/{role}
The role name is the unique name for the role. </p></td>
                </tr>
              
                <tr>
                  <td>role_name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The role name. It&#39;s unique within the instance. </p></td>
                </tr>
              
                <tr>
                  <td>password</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>The role password. </p></td>
                </tr>
              
                <tr>
                  <td>connection_limit</td>
                  <td><a href="#int32">int32</a></td>
                  <td>optional</td>
                  <td><p>The connection count limit for this role. </p></td>
                </tr>
              
                <tr>
                  <td>valid_until</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>The expiration for the role&#39;s password. </p></td>
                </tr>
              
                <tr>
                  <td>attribute</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>The role attribute.
For PostgreSQL, it contains super_user, no_inherit, create_role, create_db, can_login, replication, and bypass_rls. Docs: https://www.postgresql.org/docs/current/role-attributes.html
For MySQL, it&#39;s the global privileges as GRANT statements, which means it only contains &#34;GRANT ... ON *.* TO ...&#34;. Docs: https://dev.mysql.com/doc/refman/8.0/en/grant.html </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListInstanceRolesRequest">ListInstanceRolesRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent, which owns this collection of roles.
Format: instances/{instance} </p></td>
                </tr>
              
                <tr>
                  <td>page_size</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>Not used.
The maximum number of roles to return. The service may return fewer than
this value.
If unspecified, at most 10 roles will be returned.
The maximum value is 1000; values above 1000 will be coerced to 1000. </p></td>
                </tr>
              
                <tr>
                  <td>page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Not used.
A page token, received from a previous `ListInstanceRoles` call.
Provide this to retrieve the subsequent page.

When paginating, all other parameters provided to `ListInstanceRoles` must match
the call that provided the page token. </p></td>
                </tr>
              
                <tr>
                  <td>refresh</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Refresh will refresh and return the latest data. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListInstanceRolesResponse">ListInstanceRolesResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>roles</td>
                  <td><a href="#bytebase.v1.InstanceRole">InstanceRole</a></td>
                  <td>repeated</td>
                  <td><p>The roles from the specified request. </p></td>
                </tr>
              
                <tr>
                  <td>next_page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A token, which can be sent as `page_token` to retrieve the next page.
If this field is omitted, there are no subsequent pages. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      

      

      
        <h3 id="bytebase.v1.InstanceRoleService">InstanceRoleService</h3>
        <p>InstanceRoleService manages database roles within instances.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>GetInstanceRole</td>
                <td><a href="#bytebase.v1.GetInstanceRoleRequest">GetInstanceRoleRequest</a></td>
                <td><a href="#bytebase.v1.InstanceRole">InstanceRole</a></td>
                <td><p>Gets a database role from an instance.
Permissions required: bb.instanceRoles.get</p></td>
              </tr>
            
              <tr>
                <td>ListInstanceRoles</td>
                <td><a href="#bytebase.v1.ListInstanceRolesRequest">ListInstanceRolesRequest</a></td>
                <td><a href="#bytebase.v1.ListInstanceRolesResponse">ListInstanceRolesResponse</a></td>
                <td><p>Lists all database roles in an instance.
Permissions required: bb.instanceRoles.list</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>GetInstanceRole</td>
                <td>GET</td>
                <td>/v1/{name=instances/*/roles/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>ListInstanceRoles</td>
                <td>GET</td>
                <td>/v1/{parent=instances/*}/roles</td>
                <td></td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/instance_service.proto">v1/instance_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.AddDataSourceRequest">AddDataSourceRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the instance to add a data source to.
Format: instances/{instance} </p></td>
                </tr>
              
                <tr>
                  <td>data_source</td>
                  <td><a href="#bytebase.v1.DataSource">DataSource</a></td>
                  <td></td>
                  <td><p>Identified by data source ID.
Only READ_ONLY data source can be added. </p></td>
                </tr>
              
                <tr>
                  <td>validate_only</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Validate only also tests the data source connection. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchSyncInstancesRequest">BatchSyncInstancesRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>requests</td>
                  <td><a href="#bytebase.v1.SyncInstanceRequest">SyncInstanceRequest</a></td>
                  <td>repeated</td>
                  <td><p>The request message specifying the instances to sync.
A maximum of 1000 instances can be synced in a batch. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchSyncInstancesResponse">BatchSyncInstancesResponse</h3>
        <p></p>

        

        
      
        <h3 id="bytebase.v1.BatchUpdateInstancesRequest">BatchUpdateInstancesRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>requests</td>
                  <td><a href="#bytebase.v1.UpdateInstanceRequest">UpdateInstanceRequest</a></td>
                  <td>repeated</td>
                  <td><p>The request message specifying the resources to update. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchUpdateInstancesResponse">BatchUpdateInstancesResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>instances</td>
                  <td><a href="#bytebase.v1.Instance">Instance</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.CreateInstanceRequest">CreateInstanceRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>instance</td>
                  <td><a href="#bytebase.v1.Instance">Instance</a></td>
                  <td></td>
                  <td><p>The instance to create. </p></td>
                </tr>
              
                <tr>
                  <td>instance_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The ID to use for the instance, which will become the final component of
the instance&#39;s resource name.

This value should be 4-63 characters, and valid characters
are /[a-z][0-9]-/. </p></td>
                </tr>
              
                <tr>
                  <td>validate_only</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Validate only also tests the data source connection. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DataSource">DataSource</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The unique identifier for this data source. </p></td>
                </tr>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.DataSourceType">DataSourceType</a></td>
                  <td></td>
                  <td><p>The type of data source (ADMIN or READ_ONLY). </p></td>
                </tr>
              
                <tr>
                  <td>username</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The username for database authentication. </p></td>
                </tr>
              
                <tr>
                  <td>password</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The password for database authentication. </p></td>
                </tr>
              
                <tr>
                  <td>use_ssl</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Use SSL to connect to the data source. By default, we use system default SSL configuration. </p></td>
                </tr>
              
                <tr>
                  <td>ssl_ca</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The SSL certificate authority certificate. </p></td>
                </tr>
              
                <tr>
                  <td>ssl_cert</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The SSL client certificate. </p></td>
                </tr>
              
                <tr>
                  <td>ssl_key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The SSL client private key. </p></td>
                </tr>
              
                <tr>
                  <td>verify_tls_certificate</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>verify_tls_certificate enables TLS certificate verification for SSL connections.
Default is false (no verification) for backward compatibility.
Set to true for secure connections (recommended for production).
Only set to false for development or when certificates cannot be properly
validated (e.g., self-signed certs, VPN environments). </p></td>
                </tr>
              
                <tr>
                  <td>host</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The hostname or IP address of the database server. </p></td>
                </tr>
              
                <tr>
                  <td>port</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The port number of the database server. </p></td>
                </tr>
              
                <tr>
                  <td>database</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the database to connect to. </p></td>
                </tr>
              
                <tr>
                  <td>srv</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>srv, authentication_database and replica_set are used for MongoDB.
srv is a boolean flag that indicates whether the host is a DNS SRV record. </p></td>
                </tr>
              
                <tr>
                  <td>authentication_database</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>authentication_database is the database name to authenticate against, which stores the user credentials. </p></td>
                </tr>
              
                <tr>
                  <td>replica_set</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>replica_set is used for MongoDB replica set. </p></td>
                </tr>
              
                <tr>
                  <td>sid</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>sid and service_name are used for Oracle. </p></td>
                </tr>
              
                <tr>
                  <td>service_name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>ssh_host</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Connection over SSH.
The hostname of the SSH server agent.
Required. </p></td>
                </tr>
              
                <tr>
                  <td>ssh_port</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The port of the SSH server agent. It&#39;s 22 typically.
Required. </p></td>
                </tr>
              
                <tr>
                  <td>ssh_user</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The user to login the server.
Required. </p></td>
                </tr>
              
                <tr>
                  <td>ssh_password</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The password to login the server. If it&#39;s empty string, no password is required. </p></td>
                </tr>
              
                <tr>
                  <td>ssh_private_key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The private key to login the server. If it&#39;s empty string, we will use the system default private key from os.Getenv(&#34;SSH_AUTH_SOCK&#34;). </p></td>
                </tr>
              
                <tr>
                  <td>authentication_private_key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>PKCS#8 private key in PEM format. If it&#39;s empty string, no private key is required.
Used for authentication when connecting to the data source. </p></td>
                </tr>
              
                <tr>
                  <td>authentication_private_key_passphrase</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Passphrase for the encrypted PKCS#8 private key. Only used when the private key is encrypted. </p></td>
                </tr>
              
                <tr>
                  <td>external_secret</td>
                  <td><a href="#bytebase.v1.DataSourceExternalSecret">DataSourceExternalSecret</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>authentication_type</td>
                  <td><a href="#bytebase.v1.DataSource.AuthenticationType">DataSource.AuthenticationType</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>azure_credential</td>
                  <td><a href="#bytebase.v1.DataSource.AzureCredential">DataSource.AzureCredential</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>aws_credential</td>
                  <td><a href="#bytebase.v1.DataSource.AWSCredential">DataSource.AWSCredential</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>gcp_credential</td>
                  <td><a href="#bytebase.v1.DataSource.GCPCredential">DataSource.GCPCredential</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>sasl_config</td>
                  <td><a href="#bytebase.v1.SASLConfig">SASLConfig</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>additional_addresses</td>
                  <td><a href="#bytebase.v1.DataSource.Address">DataSource.Address</a></td>
                  <td>repeated</td>
                  <td><p>additional_addresses is used for MongoDB replica set. </p></td>
                </tr>
              
                <tr>
                  <td>direct_connection</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>direct_connection is used for MongoDB to dispatch all the operations to the node specified in the connection string. </p></td>
                </tr>
              
                <tr>
                  <td>region</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>region is the location of where the DB is, works for AWS RDS. For example, us-east-1. </p></td>
                </tr>
              
                <tr>
                  <td>warehouse_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>warehouse_id is used by Databricks. </p></td>
                </tr>
              
                <tr>
                  <td>master_name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>master_name is the master name used by connecting redis-master via redis sentinel. </p></td>
                </tr>
              
                <tr>
                  <td>master_username</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>master_username and master_password are master credentials used by redis sentinel mode. </p></td>
                </tr>
              
                <tr>
                  <td>master_password</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>redis_type</td>
                  <td><a href="#bytebase.v1.DataSource.RedisType">DataSource.RedisType</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>cluster</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Cluster is the cluster name for the data source. Used by CockroachDB. </p></td>
                </tr>
              
                <tr>
                  <td>extra_connection_parameters</td>
                  <td><a href="#bytebase.v1.DataSource.ExtraConnectionParametersEntry">DataSource.ExtraConnectionParametersEntry</a></td>
                  <td>repeated</td>
                  <td><p>Extra connection parameters for the database connection.
For PostgreSQL HA, this can be used to set target_session_attrs=read-write </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DataSource.AWSCredential">DataSource.AWSCredential</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>access_key_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>secret_access_key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>session_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>role_arn</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>ARN of IAM role to assume for cross-account access.
See: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use.html </p></td>
                </tr>
              
                <tr>
                  <td>external_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Optional external ID for additional security when assuming role.
See: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user_externalid.html </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DataSource.Address">DataSource.Address</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>host</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>port</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DataSource.AzureCredential">DataSource.AzureCredential</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>tenant_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>client_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>client_secret</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DataSource.ExtraConnectionParametersEntry">DataSource.ExtraConnectionParametersEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DataSource.GCPCredential">DataSource.GCPCredential</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>content</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DataSourceExternalSecret">DataSourceExternalSecret</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>secret_type</td>
                  <td><a href="#bytebase.v1.DataSourceExternalSecret.SecretType">DataSourceExternalSecret.SecretType</a></td>
                  <td></td>
                  <td><p>The type of external secret store. </p></td>
                </tr>
              
                <tr>
                  <td>url</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The URL of the external secret store. </p></td>
                </tr>
              
                <tr>
                  <td>auth_type</td>
                  <td><a href="#bytebase.v1.DataSourceExternalSecret.AuthType">DataSourceExternalSecret.AuthType</a></td>
                  <td></td>
                  <td><p>The authentication method for accessing the secret store. </p></td>
                </tr>
              
                <tr>
                  <td>app_role</td>
                  <td><a href="#bytebase.v1.DataSourceExternalSecret.AppRoleAuthOption">DataSourceExternalSecret.AppRoleAuthOption</a></td>
                  <td></td>
                  <td><p>AppRole authentication configuration. </p></td>
                </tr>
              
                <tr>
                  <td>token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Token for direct authentication. </p></td>
                </tr>
              
                <tr>
                  <td>engine_name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>engine name is the name for secret engine. </p></td>
                </tr>
              
                <tr>
                  <td>secret_name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>the secret name in the engine to store the password. </p></td>
                </tr>
              
                <tr>
                  <td>password_key_name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>the key name for the password. </p></td>
                </tr>
              
                <tr>
                  <td>skip_vault_tls_verification</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>TLS configuration for connecting to Vault server.
These fields are separate from the database TLS configuration in DataSource.
skip_vault_tls_verification disables TLS certificate verification for Vault connections.
Default is false (verification enabled) for security.
Only set to true for development or when certificates cannot be properly validated. </p></td>
                </tr>
              
                <tr>
                  <td>vault_ssl_ca</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>CA certificate for Vault server verification. </p></td>
                </tr>
              
                <tr>
                  <td>vault_ssl_cert</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Client certificate for mutual TLS authentication with Vault. </p></td>
                </tr>
              
                <tr>
                  <td>vault_ssl_key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Client private key for mutual TLS authentication with Vault. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DataSourceExternalSecret.AppRoleAuthOption">DataSourceExternalSecret.AppRoleAuthOption</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>role_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The role ID for Vault AppRole authentication. </p></td>
                </tr>
              
                <tr>
                  <td>secret_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>the secret id for the role without ttl. </p></td>
                </tr>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.DataSourceExternalSecret.AppRoleAuthOption.SecretType">DataSourceExternalSecret.AppRoleAuthOption.SecretType</a></td>
                  <td></td>
                  <td><p>The type of secret for AppRole authentication. </p></td>
                </tr>
              
                <tr>
                  <td>mount_path</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The path where the approle auth method is mounted. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DeleteInstanceRequest">DeleteInstanceRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the instance to delete.
Format: instances/{instance} </p></td>
                </tr>
              
                <tr>
                  <td>force</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, any databases and sheets from this project will also be moved to default project, and all open issues will be closed. </p></td>
                </tr>
              
                <tr>
                  <td>purge</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, permanently purge the soft-deleted instance and all related resources.
This operation is irreversible. Following AIP-165, this should only be used for
administrative cleanup of old soft-deleted instances.
The instance must already be soft-deleted for this to work. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetInstanceRequest">GetInstanceRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the instance to retrieve.
Format: instances/{instance} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Instance">Instance</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the instance.
Format: instances/{instance} </p></td>
                </tr>
              
                <tr>
                  <td>state</td>
                  <td><a href="#bytebase.v1.State">State</a></td>
                  <td></td>
                  <td><p>The lifecycle state of the instance. </p></td>
                </tr>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The display title of the instance. </p></td>
                </tr>
              
                <tr>
                  <td>engine</td>
                  <td><a href="#bytebase.v1.Engine">Engine</a></td>
                  <td></td>
                  <td><p>The database engine type. </p></td>
                </tr>
              
                <tr>
                  <td>engine_version</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The version of the database engine. </p></td>
                </tr>
              
                <tr>
                  <td>external_link</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>External URL to the database instance console. </p></td>
                </tr>
              
                <tr>
                  <td>data_sources</td>
                  <td><a href="#bytebase.v1.DataSource">DataSource</a></td>
                  <td>repeated</td>
                  <td><p>Data source configurations for connecting to the instance. </p></td>
                </tr>
              
                <tr>
                  <td>environment</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>The environment resource.
Format: environments/prod where prod is the environment resource ID. </p></td>
                </tr>
              
                <tr>
                  <td>activation</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether the instance is activated for use. </p></td>
                </tr>
              
                <tr>
                  <td>roles</td>
                  <td><a href="#bytebase.v1.InstanceRole">InstanceRole</a></td>
                  <td>repeated</td>
                  <td><p>Database roles available in this instance. </p></td>
                </tr>
              
                <tr>
                  <td>sync_interval</td>
                  <td><a href="#google.protobuf.Duration">google.protobuf.Duration</a></td>
                  <td></td>
                  <td><p>How often the instance is synced. </p></td>
                </tr>
              
                <tr>
                  <td>maximum_connections</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of connections.
The default is 10 if the value is unset or zero. </p></td>
                </tr>
              
                <tr>
                  <td>sync_databases</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>Enable sync for following databases.
Default empty, means sync all schemas &amp; databases. </p></td>
                </tr>
              
                <tr>
                  <td>last_sync_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>The last time the instance was synced. </p></td>
                </tr>
              
                <tr>
                  <td>labels</td>
                  <td><a href="#bytebase.v1.Instance.LabelsEntry">Instance.LabelsEntry</a></td>
                  <td>repeated</td>
                  <td><p>Labels are key-value pairs that can be attached to the instance.
For example, { &#34;org_group&#34;: &#34;infrastructure&#34;, &#34;environment&#34;: &#34;production&#34; } </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Instance.LabelsEntry">Instance.LabelsEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.InstanceResource">InstanceResource</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The display title of the instance. </p></td>
                </tr>
              
                <tr>
                  <td>engine</td>
                  <td><a href="#bytebase.v1.Engine">Engine</a></td>
                  <td></td>
                  <td><p>The database engine type. </p></td>
                </tr>
              
                <tr>
                  <td>engine_version</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The version of the database engine. </p></td>
                </tr>
              
                <tr>
                  <td>data_sources</td>
                  <td><a href="#bytebase.v1.DataSource">DataSource</a></td>
                  <td>repeated</td>
                  <td><p>Data source configurations for the instance. </p></td>
                </tr>
              
                <tr>
                  <td>activation</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether the instance is activated. </p></td>
                </tr>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the instance.
Format: instances/{instance} </p></td>
                </tr>
              
                <tr>
                  <td>environment</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>The environment resource.
Format: environments/prod where prod is the environment resource ID. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.KerberosConfig">KerberosConfig</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>primary</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The primary component of the Kerberos principal. </p></td>
                </tr>
              
                <tr>
                  <td>instance</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The instance component of the Kerberos principal. </p></td>
                </tr>
              
                <tr>
                  <td>realm</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The Kerberos realm. </p></td>
                </tr>
              
                <tr>
                  <td>keytab</td>
                  <td><a href="#bytes">bytes</a></td>
                  <td></td>
                  <td><p>The keytab file contents for authentication. </p></td>
                </tr>
              
                <tr>
                  <td>kdc_host</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The hostname of the Key Distribution Center (KDC). </p></td>
                </tr>
              
                <tr>
                  <td>kdc_port</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The port of the Key Distribution Center (KDC). </p></td>
                </tr>
              
                <tr>
                  <td>kdc_transport_protocol</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The transport protocol for KDC communication (tcp or udp). </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListInstanceDatabaseRequest">ListInstanceDatabaseRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the instance.
Format: instances/{instance} </p></td>
                </tr>
              
                <tr>
                  <td>instance</td>
                  <td><a href="#bytebase.v1.Instance">Instance</a></td>
                  <td>optional</td>
                  <td><p>The target instance. We need to set this field if the target instance is not created yet. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListInstanceDatabaseResponse">ListInstanceDatabaseResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>databases</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>All database name list in the instance. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListInstancesRequest">ListInstancesRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>page_size</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of instances to return. The service may return fewer than
this value.
If unspecified, at most 10 instances will be returned.
The maximum value is 1000; values above 1000 will be coerced to 1000. </p></td>
                </tr>
              
                <tr>
                  <td>page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A page token, received from a previous `ListInstances` call.
Provide this to retrieve the subsequent page.

When paginating, all other parameters provided to `ListInstances` must match
the call that provided the page token. </p></td>
                </tr>
              
                <tr>
                  <td>show_deleted</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Show deleted instances if specified. </p></td>
                </tr>
              
                <tr>
                  <td>filter</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Filter the instance.
The syntax and semantics of CEL are documented at https://github.com/google/cel-spec

Supported filters:
- name: the instance name, support &#34;==&#34; and &#34;.matches()&#34; operator.
- resource_id: the instance id, support &#34;==&#34; and &#34;.matches()&#34; operator.
- environment: the environment full name in &#34;environments/{id}&#34; format, support &#34;==&#34; operator.
- state: the instance state, check State enum for values, support &#34;==&#34; operator.
- engine: the instance engine, check Engine enum for values. Support &#34;==&#34;, &#34;in [xx]&#34;, &#34;!(in [xx])&#34; operator.
- host: the instance host, support &#34;==&#34; and &#34;.matches()&#34; operator.
- port: the instance port, support &#34;==&#34; and &#34;.matches()&#34; operator.
- project: the project full name in &#34;projects/{id}&#34; format, support &#34;==&#34; operator.
- labels.{key}: the instance label, support &#34;==&#34; and &#34;in&#34; operators.

For example:
name == &#34;sample instance&#34;
name.matches(&#34;sample&#34;)
resource_id == &#34;sample-instance&#34;
resource_id.matches(&#34;sample&#34;)
state == &#34;DELETED&#34;
environment == &#34;environments/test&#34;
environment == &#34;&#34; (find instances which environment is not set)
engine == &#34;MYSQL&#34;
engine in [&#34;MYSQL&#34;, &#34;POSTGRES&#34;]
!(engine in [&#34;MYSQL&#34;, &#34;POSTGRES&#34;])
host == &#34;127.0.0.1&#34;
host.matches(&#34;127.0&#34;)
port == &#34;54321&#34;
port.matches(&#34;543&#34;)
labels.org_group == &#34;infrastructure&#34;
labels.environment in [&#34;prod&#34;, &#34;production&#34;]
project == &#34;projects/sample-project&#34;
You can combine filter conditions like:
name.matches(&#34;sample&#34;) &amp;&amp; environment == &#34;environments/test&#34;
host == &#34;127.0.0.1&#34; &amp;&amp; port == &#34;54321&#34; </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListInstancesResponse">ListInstancesResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>instances</td>
                  <td><a href="#bytebase.v1.Instance">Instance</a></td>
                  <td>repeated</td>
                  <td><p>The instances from the specified request. </p></td>
                </tr>
              
                <tr>
                  <td>next_page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A token, which can be sent as `page_token` to retrieve the next page.
If this field is omitted, there are no subsequent pages. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.RemoveDataSourceRequest">RemoveDataSourceRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the instance to remove a data source from.
Format: instances/{instance} </p></td>
                </tr>
              
                <tr>
                  <td>data_source</td>
                  <td><a href="#bytebase.v1.DataSource">DataSource</a></td>
                  <td></td>
                  <td><p>Identified by data source ID.
Only READ_ONLY data source can be removed. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SASLConfig">SASLConfig</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>krb_config</td>
                  <td><a href="#bytebase.v1.KerberosConfig">KerberosConfig</a></td>
                  <td></td>
                  <td><p>Kerberos authentication configuration. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SyncInstanceRequest">SyncInstanceRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of instance.
Format: instances/{instance} </p></td>
                </tr>
              
                <tr>
                  <td>enable_full_sync</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>When full sync is enabled, all databases in the instance will be synchronized. Otherwise, only
the instance metadata (such as the database list) and any newly discovered databases will be synced. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SyncInstanceResponse">SyncInstanceResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>databases</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>All database name list in the instance. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UndeleteInstanceRequest">UndeleteInstanceRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the deleted instance.
Format: instances/{instance} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UpdateDataSourceRequest">UpdateDataSourceRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the instance to update a data source.
Format: instances/{instance} </p></td>
                </tr>
              
                <tr>
                  <td>data_source</td>
                  <td><a href="#bytebase.v1.DataSource">DataSource</a></td>
                  <td></td>
                  <td><p>Identified by data source ID. </p></td>
                </tr>
              
                <tr>
                  <td>update_mask</td>
                  <td><a href="#google.protobuf.FieldMask">google.protobuf.FieldMask</a></td>
                  <td></td>
                  <td><p>The list of fields to update. </p></td>
                </tr>
              
                <tr>
                  <td>validate_only</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Validate only also tests the data source connection. </p></td>
                </tr>
              
                <tr>
                  <td>allow_missing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, and the data source is not found, a new data source will be created.
In this situation, `update_mask` is ignored. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UpdateInstanceRequest">UpdateInstanceRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>instance</td>
                  <td><a href="#bytebase.v1.Instance">Instance</a></td>
                  <td></td>
                  <td><p>The instance to update.

The instance&#39;s `name` field is used to identify the instance to update.
Format: instances/{instance} </p></td>
                </tr>
              
                <tr>
                  <td>update_mask</td>
                  <td><a href="#google.protobuf.FieldMask">google.protobuf.FieldMask</a></td>
                  <td></td>
                  <td><p>The list of fields to update. </p></td>
                </tr>
              
                <tr>
                  <td>allow_missing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, and the instance is not found, a new instance will be created.
In this situation, `update_mask` is ignored. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.DataSource.AuthenticationType">DataSource.AuthenticationType</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>AUTHENTICATION_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>PASSWORD</td>
                <td>1</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>GOOGLE_CLOUD_SQL_IAM</td>
                <td>2</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>AWS_RDS_IAM</td>
                <td>3</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>AZURE_IAM</td>
                <td>4</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.DataSource.RedisType">DataSource.RedisType</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>REDIS_TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STANDALONE</td>
                <td>1</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>SENTINEL</td>
                <td>2</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>CLUSTER</td>
                <td>3</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.DataSourceExternalSecret.AppRoleAuthOption.SecretType">DataSourceExternalSecret.AppRoleAuthOption.SecretType</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>SECRET_TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified secret type.</p></td>
              </tr>
            
              <tr>
                <td>PLAIN</td>
                <td>1</td>
                <td><p>Plain text secret.</p></td>
              </tr>
            
              <tr>
                <td>ENVIRONMENT</td>
                <td>2</td>
                <td><p>Secret from environment variable.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.DataSourceExternalSecret.AuthType">DataSourceExternalSecret.AuthType</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>AUTH_TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified authentication type.</p></td>
              </tr>
            
              <tr>
                <td>TOKEN</td>
                <td>1</td>
                <td><p>ref: https://developer.hashicorp.com/vault/docs/auth/token</p></td>
              </tr>
            
              <tr>
                <td>VAULT_APP_ROLE</td>
                <td>2</td>
                <td><p>ref: https://developer.hashicorp.com/vault/docs/auth/approle</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.DataSourceExternalSecret.SecretType">DataSourceExternalSecret.SecretType</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>SECRET_TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified secret type.</p></td>
              </tr>
            
              <tr>
                <td>VAULT_KV_V2</td>
                <td>1</td>
                <td><p>ref: https://developer.hashicorp.com/vault/api-docs/secret/kv/kv-v2</p></td>
              </tr>
            
              <tr>
                <td>AWS_SECRETS_MANAGER</td>
                <td>2</td>
                <td><p>ref: https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html</p></td>
              </tr>
            
              <tr>
                <td>GCP_SECRET_MANAGER</td>
                <td>3</td>
                <td><p>ref: https://cloud.google.com/secret-manager/docs</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.DataSourceType">DataSourceType</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>DATA_SOURCE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified data source type.</p></td>
              </tr>
            
              <tr>
                <td>ADMIN</td>
                <td>1</td>
                <td><p>Admin data source with write permissions.</p></td>
              </tr>
            
              <tr>
                <td>READ_ONLY</td>
                <td>2</td>
                <td><p>Read-only data source for query operations.</p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
        <h3 id="bytebase.v1.InstanceService">InstanceService</h3>
        <p>InstanceService manages database instances and their connections.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>GetInstance</td>
                <td><a href="#bytebase.v1.GetInstanceRequest">GetInstanceRequest</a></td>
                <td><a href="#bytebase.v1.Instance">Instance</a></td>
                <td><p>Gets a database instance by name.
Permissions required: bb.instances.get</p></td>
              </tr>
            
              <tr>
                <td>ListInstances</td>
                <td><a href="#bytebase.v1.ListInstancesRequest">ListInstancesRequest</a></td>
                <td><a href="#bytebase.v1.ListInstancesResponse">ListInstancesResponse</a></td>
                <td><p>Lists all database instances.
Permissions required: bb.instances.list</p></td>
              </tr>
            
              <tr>
                <td>CreateInstance</td>
                <td><a href="#bytebase.v1.CreateInstanceRequest">CreateInstanceRequest</a></td>
                <td><a href="#bytebase.v1.Instance">Instance</a></td>
                <td><p>Creates a new database instance.
Permissions required: bb.instances.create</p></td>
              </tr>
            
              <tr>
                <td>UpdateInstance</td>
                <td><a href="#bytebase.v1.UpdateInstanceRequest">UpdateInstanceRequest</a></td>
                <td><a href="#bytebase.v1.Instance">Instance</a></td>
                <td><p>Updates a database instance.
Permissions required: bb.instances.update</p></td>
              </tr>
            
              <tr>
                <td>DeleteInstance</td>
                <td><a href="#bytebase.v1.DeleteInstanceRequest">DeleteInstanceRequest</a></td>
                <td><a href="#google.protobuf.Empty">.google.protobuf.Empty</a></td>
                <td><p>Deletes or soft-deletes a database instance.
Permissions required: bb.instances.delete</p></td>
              </tr>
            
              <tr>
                <td>UndeleteInstance</td>
                <td><a href="#bytebase.v1.UndeleteInstanceRequest">UndeleteInstanceRequest</a></td>
                <td><a href="#bytebase.v1.Instance">Instance</a></td>
                <td><p>Restores a soft-deleted database instance.
Permissions required: bb.instances.undelete</p></td>
              </tr>
            
              <tr>
                <td>SyncInstance</td>
                <td><a href="#bytebase.v1.SyncInstanceRequest">SyncInstanceRequest</a></td>
                <td><a href="#bytebase.v1.SyncInstanceResponse">SyncInstanceResponse</a></td>
                <td><p>Syncs database schemas and metadata from an instance.
Permissions required: bb.instances.sync</p></td>
              </tr>
            
              <tr>
                <td>ListInstanceDatabase</td>
                <td><a href="#bytebase.v1.ListInstanceDatabaseRequest">ListInstanceDatabaseRequest</a></td>
                <td><a href="#bytebase.v1.ListInstanceDatabaseResponse">ListInstanceDatabaseResponse</a></td>
                <td><p>Lists all databases within an instance without creating them.
Permissions required: bb.instances.get</p></td>
              </tr>
            
              <tr>
                <td>BatchSyncInstances</td>
                <td><a href="#bytebase.v1.BatchSyncInstancesRequest">BatchSyncInstancesRequest</a></td>
                <td><a href="#bytebase.v1.BatchSyncInstancesResponse">BatchSyncInstancesResponse</a></td>
                <td><p>Syncs multiple instances in a single request.
Permissions required: bb.instances.sync</p></td>
              </tr>
            
              <tr>
                <td>BatchUpdateInstances</td>
                <td><a href="#bytebase.v1.BatchUpdateInstancesRequest">BatchUpdateInstancesRequest</a></td>
                <td><a href="#bytebase.v1.BatchUpdateInstancesResponse">BatchUpdateInstancesResponse</a></td>
                <td><p>Updates multiple instances in a single request.
Permissions required: bb.instances.update</p></td>
              </tr>
            
              <tr>
                <td>AddDataSource</td>
                <td><a href="#bytebase.v1.AddDataSourceRequest">AddDataSourceRequest</a></td>
                <td><a href="#bytebase.v1.Instance">Instance</a></td>
                <td><p>Adds a read-only data source to an instance.
Permissions required: bb.instances.update</p></td>
              </tr>
            
              <tr>
                <td>RemoveDataSource</td>
                <td><a href="#bytebase.v1.RemoveDataSourceRequest">RemoveDataSourceRequest</a></td>
                <td><a href="#bytebase.v1.Instance">Instance</a></td>
                <td><p>Removes a read-only data source from an instance.
Permissions required: bb.instances.update</p></td>
              </tr>
            
              <tr>
                <td>UpdateDataSource</td>
                <td><a href="#bytebase.v1.UpdateDataSourceRequest">UpdateDataSourceRequest</a></td>
                <td><a href="#bytebase.v1.Instance">Instance</a></td>
                <td><p>Updates a data source configuration.
Permissions required: bb.instances.update</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>GetInstance</td>
                <td>GET</td>
                <td>/v1/{name=instances/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>ListInstances</td>
                <td>GET</td>
                <td>/v1/instances</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>CreateInstance</td>
                <td>POST</td>
                <td>/v1/instances</td>
                <td>instance</td>
              </tr>
              
            
              
              
              <tr>
                <td>UpdateInstance</td>
                <td>PATCH</td>
                <td>/v1/{instance.name=instances/*}</td>
                <td>instance</td>
              </tr>
              
            
              
              
              <tr>
                <td>DeleteInstance</td>
                <td>DELETE</td>
                <td>/v1/{name=instances/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>UndeleteInstance</td>
                <td>POST</td>
                <td>/v1/{name=instances/*}:undelete</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>SyncInstance</td>
                <td>POST</td>
                <td>/v1/{name=instances/*}:sync</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>ListInstanceDatabase</td>
                <td>POST</td>
                <td>/v1/{name=instances/*}:databases</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>BatchSyncInstances</td>
                <td>POST</td>
                <td>/v1/instances:batchSync</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>BatchUpdateInstances</td>
                <td>POST</td>
                <td>/v1/instances:batchUpdate</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>AddDataSource</td>
                <td>POST</td>
                <td>/v1/{name=instances/*}:addDataSource</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>RemoveDataSource</td>
                <td>POST</td>
                <td>/v1/{name=instances/*}:removeDataSource</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>UpdateDataSource</td>
                <td>PATCH</td>
                <td>/v1/{name=instances/*}:updateDataSource</td>
                <td>data_source</td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/database_service.proto">v1/database_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.BatchGetDatabasesRequest">BatchGetDatabasesRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent resource shared by all databases being retrieved.
- projects/{project}: batch get databases in a project;
- instances/{instances}: batch get databases in a instance;
Use &#34;-&#34; as wildcard to batch get databases across parent. </p></td>
                </tr>
              
                <tr>
                  <td>names</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The list of database names to retrieve. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchGetDatabasesResponse">BatchGetDatabasesResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>databases</td>
                  <td><a href="#bytebase.v1.Database">Database</a></td>
                  <td>repeated</td>
                  <td><p>The databases from the specified request. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchSyncDatabasesRequest">BatchSyncDatabasesRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent resource shared by all databases being updated.
Format: instances/{instance}
If the operation spans parents, a dash (-) may be accepted as a wildcard. </p></td>
                </tr>
              
                <tr>
                  <td>names</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The list of database names to sync. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchSyncDatabasesResponse">BatchSyncDatabasesResponse</h3>
        <p></p>

        

        
      
        <h3 id="bytebase.v1.BatchUpdateDatabasesRequest">BatchUpdateDatabasesRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent resource shared by all databases being updated.
Format: instances/{instance}
If the operation spans parents, a dash (-) may be accepted as a wildcard.
We only support updating the project of databases for now. </p></td>
                </tr>
              
                <tr>
                  <td>requests</td>
                  <td><a href="#bytebase.v1.UpdateDatabaseRequest">UpdateDatabaseRequest</a></td>
                  <td>repeated</td>
                  <td><p>The request message specifying the resources to update.
A maximum of 1000 databases can be modified in a batch. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchUpdateDatabasesResponse">BatchUpdateDatabasesResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>databases</td>
                  <td><a href="#bytebase.v1.Database">Database</a></td>
                  <td>repeated</td>
                  <td><p>Databases updated. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BoundingBox">BoundingBox</h3>
        <p>BoundingBox defines the spatial bounds for GEOMETRY spatial indexes.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>xmin</td>
                  <td><a href="#double">double</a></td>
                  <td></td>
                  <td><p>Minimum X coordinate </p></td>
                </tr>
              
                <tr>
                  <td>ymin</td>
                  <td><a href="#double">double</a></td>
                  <td></td>
                  <td><p>Minimum Y coordinate </p></td>
                </tr>
              
                <tr>
                  <td>xmax</td>
                  <td><a href="#double">double</a></td>
                  <td></td>
                  <td><p>Maximum X coordinate </p></td>
                </tr>
              
                <tr>
                  <td>ymax</td>
                  <td><a href="#double">double</a></td>
                  <td></td>
                  <td><p>Maximum Y coordinate </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ChangedResourceDatabase">ChangedResourceDatabase</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>schemas</td>
                  <td><a href="#bytebase.v1.ChangedResourceSchema">ChangedResourceSchema</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ChangedResourceFunction">ChangedResourceFunction</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>ranges</td>
                  <td><a href="#bytebase.v1.Range">Range</a></td>
                  <td>repeated</td>
                  <td><p>The ranges of sub-strings correspond to the statements on the sheet. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ChangedResourceProcedure">ChangedResourceProcedure</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>ranges</td>
                  <td><a href="#bytebase.v1.Range">Range</a></td>
                  <td>repeated</td>
                  <td><p>The ranges of sub-strings correspond to the statements on the sheet. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ChangedResourceSchema">ChangedResourceSchema</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>tables</td>
                  <td><a href="#bytebase.v1.ChangedResourceTable">ChangedResourceTable</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>views</td>
                  <td><a href="#bytebase.v1.ChangedResourceView">ChangedResourceView</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>functions</td>
                  <td><a href="#bytebase.v1.ChangedResourceFunction">ChangedResourceFunction</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>procedures</td>
                  <td><a href="#bytebase.v1.ChangedResourceProcedure">ChangedResourceProcedure</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ChangedResourceTable">ChangedResourceTable</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>ranges</td>
                  <td><a href="#bytebase.v1.Range">Range</a></td>
                  <td>repeated</td>
                  <td><p>The ranges of sub-strings correspond to the statements on the sheet. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ChangedResourceView">ChangedResourceView</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>ranges</td>
                  <td><a href="#bytebase.v1.Range">Range</a></td>
                  <td>repeated</td>
                  <td><p>The ranges of sub-strings correspond to the statements on the sheet. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ChangedResources">ChangedResources</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>databases</td>
                  <td><a href="#bytebase.v1.ChangedResourceDatabase">ChangedResourceDatabase</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Changelog">Changelog</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: instances/{instance}/databases/{database}/changelogs/{changelog} </p></td>
                </tr>
              
                <tr>
                  <td>create_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>status</td>
                  <td><a href="#bytebase.v1.Changelog.Status">Changelog.Status</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>statement</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The statement is used for preview purpose. </p></td>
                </tr>
              
                <tr>
                  <td>statement_size</td>
                  <td><a href="#int64">int64</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>statement_sheet</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the sheet resource.
Format: projects/{project}/sheets/{sheet} </p></td>
                </tr>
              
                <tr>
                  <td>schema</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>schema_size</td>
                  <td><a href="#int64">int64</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>prev_schema</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>prev_schema_size</td>
                  <td><a href="#int64">int64</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>issue</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project}/issues/{issue} </p></td>
                </tr>
              
                <tr>
                  <td>task_run</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{projects}/rollouts/{rollout}/stages/{stage}/tasks/{task}/taskRuns/{taskRun} </p></td>
                </tr>
              
                <tr>
                  <td>version</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Could be empty </p></td>
                </tr>
              
                <tr>
                  <td>revision</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Could be empty
Or present but not found if deleted </p></td>
                </tr>
              
                <tr>
                  <td>changed_resources</td>
                  <td><a href="#bytebase.v1.ChangedResources">ChangedResources</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.Changelog.Type">Changelog.Type</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>dump_version_mismatch</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>True if this changelog&#39;s dump version differs from current engine dump version.
When true and drift is detected, the drift may be a false positive from Bytebase upgrade. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.CheckConstraintMetadata">CheckConstraintMetadata</h3>
        <p>CheckConstraintMetadata is the metadata for check constraints.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name is the name of a check constraint. </p></td>
                </tr>
              
                <tr>
                  <td>expression</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The expression is the expression of a check constraint. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ColumnMetadata">ColumnMetadata</h3>
        <p>ColumnMetadata is the metadata for columns.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name is the name of a column. </p></td>
                </tr>
              
                <tr>
                  <td>position</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The position is the position in columns. </p></td>
                </tr>
              
                <tr>
                  <td>has_default</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>default</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The default value of column. </p></td>
                </tr>
              
                <tr>
                  <td>default_on_null</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Oracle specific metadata.
The default_on_null is the default on null of a column. </p></td>
                </tr>
              
                <tr>
                  <td>on_update</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The on_update is the on update action of a column.
For MySQL like databases, it&#39;s only supported for TIMESTAMP columns with
CURRENT_TIMESTAMP as on update value. </p></td>
                </tr>
              
                <tr>
                  <td>nullable</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>The nullable is the nullable of a column. </p></td>
                </tr>
              
                <tr>
                  <td>type</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The type is the type of a column. </p></td>
                </tr>
              
                <tr>
                  <td>character_set</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The character_set is the character_set of a column. </p></td>
                </tr>
              
                <tr>
                  <td>collation</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The collation is the collation of a column. </p></td>
                </tr>
              
                <tr>
                  <td>comment</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The comment is the comment of a column. </p></td>
                </tr>
              
                <tr>
                  <td>generation</td>
                  <td><a href="#bytebase.v1.GenerationMetadata">GenerationMetadata</a></td>
                  <td></td>
                  <td><p>The generation is the generation of a column. </p></td>
                </tr>
              
                <tr>
                  <td>is_identity</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>identity_generation</td>
                  <td><a href="#bytebase.v1.ColumnMetadata.IdentityGeneration">ColumnMetadata.IdentityGeneration</a></td>
                  <td></td>
                  <td><p>The identity_generation is for identity columns, PG only. </p></td>
                </tr>
              
                <tr>
                  <td>identity_seed</td>
                  <td><a href="#int64">int64</a></td>
                  <td></td>
                  <td><p>The identity_seed is for identity columns, MSSQL only. </p></td>
                </tr>
              
                <tr>
                  <td>identity_increment</td>
                  <td><a href="#int64">int64</a></td>
                  <td></td>
                  <td><p>The identity_increment is for identity columns, MSSQL only. </p></td>
                </tr>
              
                <tr>
                  <td>default_constraint_name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The default_constraint_name is the name of the default constraint, MSSQL only.
In MSSQL, default values are implemented as named constraints. When modifying or
dropping a column&#39;s default value, you must reference the constraint by name.
This field stores the actual constraint name from the database.

Example: A column definition like:
  CREATE TABLE employees (
    status NVARCHAR(20) DEFAULT &#39;active&#39;
  )

Will create a constraint with an auto-generated name like &#39;DF__employees__statu__3B75D760&#39;
or a user-defined name if specified:
  ALTER TABLE employees ADD CONSTRAINT DF_employees_status DEFAULT &#39;active&#39; FOR status

To modify the default, you must first drop the existing constraint by name:
  ALTER TABLE employees DROP CONSTRAINT DF__employees__statu__3B75D760
  ALTER TABLE employees ADD CONSTRAINT DF_employees_status DEFAULT &#39;inactive&#39; FOR status

This field is populated when syncing from the database. When empty (e.g., when parsing
from SQL files), the system cannot automatically drop the constraint. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Database">Database</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the database.
Format: instances/{instance}/databases/{database}
{database} is the database name in the instance. </p></td>
                </tr>
              
                <tr>
                  <td>state</td>
                  <td><a href="#bytebase.v1.State">State</a></td>
                  <td></td>
                  <td><p>The existence of a database. </p></td>
                </tr>
              
                <tr>
                  <td>successful_sync_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>The latest synchronization time. </p></td>
                </tr>
              
                <tr>
                  <td>project</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The project for a database.
Format: projects/{project} </p></td>
                </tr>
              
                <tr>
                  <td>schema_version</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The version of database schema. </p></td>
                </tr>
              
                <tr>
                  <td>environment</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>The environment resource.
Format: environments/prod where prod is the environment resource ID. </p></td>
                </tr>
              
                <tr>
                  <td>effective_environment</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>The effective environment based on environment tag above and environment
tag on the instance. Inheritance follows
https://cloud.google.com/resource-manager/docs/tags/tags-overview. </p></td>
                </tr>
              
                <tr>
                  <td>labels</td>
                  <td><a href="#bytebase.v1.Database.LabelsEntry">Database.LabelsEntry</a></td>
                  <td>repeated</td>
                  <td><p>Labels will be used for deployment and policy control. </p></td>
                </tr>
              
                <tr>
                  <td>instance_resource</td>
                  <td><a href="#bytebase.v1.InstanceResource">InstanceResource</a></td>
                  <td></td>
                  <td><p>The instance resource. </p></td>
                </tr>
              
                <tr>
                  <td>backup_available</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>The database is available for DML prior backup. </p></td>
                </tr>
              
                <tr>
                  <td>drifted</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>The schema is drifted from the source of truth. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Database.LabelsEntry">Database.LabelsEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DatabaseMetadata">DatabaseMetadata</h3>
        <p>DatabaseMetadata is the metadata for databases.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The database metadata name.

Format: instances/{instance}/databases/{database}/metadata </p></td>
                </tr>
              
                <tr>
                  <td>schemas</td>
                  <td><a href="#bytebase.v1.SchemaMetadata">SchemaMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The schemas is the list of schemas in a database. </p></td>
                </tr>
              
                <tr>
                  <td>character_set</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The character_set is the character set of a database. </p></td>
                </tr>
              
                <tr>
                  <td>collation</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The collation is the collation of a database. </p></td>
                </tr>
              
                <tr>
                  <td>extensions</td>
                  <td><a href="#bytebase.v1.ExtensionMetadata">ExtensionMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The extensions is the list of extensions in a database. </p></td>
                </tr>
              
                <tr>
                  <td>owner</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The owner of the database. </p></td>
                </tr>
              
                <tr>
                  <td>search_path</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The search_path is the search path of a PostgreSQL database. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DatabaseSDLSchema">DatabaseSDLSchema</h3>
        <p>DatabaseSDLSchema contains the schema in SDL format.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>schema</td>
                  <td><a href="#bytes">bytes</a></td>
                  <td></td>
                  <td><p>The SDL schema content.
- For SINGLE_FILE format: contains the complete SDL schema as a text string.
- For MULTI_FILE format: contains the ZIP archive as binary data. </p></td>
                </tr>
              
                <tr>
                  <td>content_type</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The MIME type of the schema content.
Indicates how the client should interpret the schema field.
Examples:
- &#34;text/plain; charset=utf-8&#34; for SINGLE_FILE format
- &#34;application/zip&#34; for MULTI_FILE format </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DatabaseSchema">DatabaseSchema</h3>
        <p>DatabaseSchema is the metadata for databases.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>schema</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The schema dump from database. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DependencyColumn">DependencyColumn</h3>
        <p>DependencyColumn is the metadata for dependency columns.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>schema</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The schema is the schema of a reference column. </p></td>
                </tr>
              
                <tr>
                  <td>table</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The table is the table of a reference column. </p></td>
                </tr>
              
                <tr>
                  <td>column</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The column is the name of a reference column. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DependencyTable">DependencyTable</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>schema</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The schema is the schema of a reference table. </p></td>
                </tr>
              
                <tr>
                  <td>table</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The table is the name of a reference table. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DiffSchemaRequest">DiffSchemaRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the database or changelog.
Format:
database: instances/{instance}/databases/{database}
changelog: instances/{instance}/databases/{database}/changelogs/{changelog} </p></td>
                </tr>
              
                <tr>
                  <td>schema</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The target schema. </p></td>
                </tr>
              
                <tr>
                  <td>changelog</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The resource name of the changelog
Format:
instances/{instance}/databases/{database}/changelogs/{changelog} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DiffSchemaResponse">DiffSchemaResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>diff</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DimensionConstraint">DimensionConstraint</h3>
        <p>DimensionConstraint defines constraints for a spatial dimension.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>dimension</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Dimension name/type (X, Y, Z, M, etc.) </p></td>
                </tr>
              
                <tr>
                  <td>min_value</td>
                  <td><a href="#double">double</a></td>
                  <td></td>
                  <td><p>Minimum value for this dimension </p></td>
                </tr>
              
                <tr>
                  <td>max_value</td>
                  <td><a href="#double">double</a></td>
                  <td></td>
                  <td><p>Maximum value for this dimension </p></td>
                </tr>
              
                <tr>
                  <td>tolerance</td>
                  <td><a href="#double">double</a></td>
                  <td></td>
                  <td><p>Tolerance for this dimension </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DimensionalConfig">DimensionalConfig</h3>
        <p>DimensionalConfig defines dimensional and constraint parameters for spatial indexes.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>dimensions</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>Number of dimensions (2-4, default 2) </p></td>
                </tr>
              
                <tr>
                  <td>data_type</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Spatial data type (GEOMETRY, GEOGRAPHY, POINT, POLYGON, etc.) </p></td>
                </tr>
              
                <tr>
                  <td>srid</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>Spatial reference system identifier (SRID) </p></td>
                </tr>
              
                <tr>
                  <td>constraints</td>
                  <td><a href="#bytebase.v1.DimensionConstraint">DimensionConstraint</a></td>
                  <td>repeated</td>
                  <td><p>Coordinate system constraints </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.EnumTypeMetadata">EnumTypeMetadata</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of a type. </p></td>
                </tr>
              
                <tr>
                  <td>values</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The enum values of a type. </p></td>
                </tr>
              
                <tr>
                  <td>comment</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The comment describing the enum type. </p></td>
                </tr>
              
                <tr>
                  <td>skip_dump</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether to skip this enum type during schema dump operations. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.EventMetadata">EventMetadata</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the event. </p></td>
                </tr>
              
                <tr>
                  <td>definition</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The schedule of the event. </p></td>
                </tr>
              
                <tr>
                  <td>time_zone</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The time zone of the event. </p></td>
                </tr>
              
                <tr>
                  <td>sql_mode</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The SQL mode setting for the event. </p></td>
                </tr>
              
                <tr>
                  <td>character_set_client</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The character set used by the client creating the event. </p></td>
                </tr>
              
                <tr>
                  <td>collation_connection</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The collation used for the connection when creating the event. </p></td>
                </tr>
              
                <tr>
                  <td>comment</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The comment is the comment of an event. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ExtensionMetadata">ExtensionMetadata</h3>
        <p>ExtensionMetadata is the metadata for extensions.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name is the name of an extension. </p></td>
                </tr>
              
                <tr>
                  <td>schema</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The schema is the extension that is installed to. But the extension usage
is not limited to the schema. </p></td>
                </tr>
              
                <tr>
                  <td>version</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The version is the version of an extension. </p></td>
                </tr>
              
                <tr>
                  <td>description</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The description is the description of an extension. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ExternalTableMetadata">ExternalTableMetadata</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name is the name of a external table. </p></td>
                </tr>
              
                <tr>
                  <td>external_server_name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The external_server_name is the name of the external server. </p></td>
                </tr>
              
                <tr>
                  <td>external_database_name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The external_database_name is the name of the external database. </p></td>
                </tr>
              
                <tr>
                  <td>columns</td>
                  <td><a href="#bytebase.v1.ColumnMetadata">ColumnMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The columns is the ordered list of columns in a foreign table. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ForeignKeyMetadata">ForeignKeyMetadata</h3>
        <p>ForeignKeyMetadata is the metadata for foreign keys.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name is the name of a foreign key. </p></td>
                </tr>
              
                <tr>
                  <td>columns</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The columns are the ordered referencing columns of a foreign key. </p></td>
                </tr>
              
                <tr>
                  <td>referenced_schema</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The referenced_schema is the referenced schema name of a foreign key.
It is an empty string for databases without such concept such as MySQL. </p></td>
                </tr>
              
                <tr>
                  <td>referenced_table</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The referenced_table is the referenced table name of a foreign key. </p></td>
                </tr>
              
                <tr>
                  <td>referenced_columns</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The referenced_columns are the ordered referenced columns of a foreign key. </p></td>
                </tr>
              
                <tr>
                  <td>on_delete</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The on_delete is the on delete action of a foreign key. </p></td>
                </tr>
              
                <tr>
                  <td>on_update</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The on_update is the on update action of a foreign key. </p></td>
                </tr>
              
                <tr>
                  <td>match_type</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The match_type is the match type of a foreign key.
The match_type is the PostgreSQL specific field.
It&#39;s empty string for other databases. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.FunctionMetadata">FunctionMetadata</h3>
        <p>FunctionMetadata is the metadata for functions.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name is the name of a function. </p></td>
                </tr>
              
                <tr>
                  <td>definition</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The definition is the definition of a function. </p></td>
                </tr>
              
                <tr>
                  <td>signature</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The signature is the name with the number and type of input arguments the
function takes. </p></td>
                </tr>
              
                <tr>
                  <td>character_set_client</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>MySQL specific metadata. </p></td>
                </tr>
              
                <tr>
                  <td>collation_connection</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>database_collation</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>sql_mode</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>comment</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>dependency_tables</td>
                  <td><a href="#bytebase.v1.DependencyTable">DependencyTable</a></td>
                  <td>repeated</td>
                  <td><p>The dependency_tables is the list of dependency tables of a function.
For PostgreSQL, it&#39;s the list of tables that the function depends on the return type definition. </p></td>
                </tr>
              
                <tr>
                  <td>skip_dump</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GenerationMetadata">GenerationMetadata</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.GenerationMetadata.Type">GenerationMetadata.Type</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>expression</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetChangelogRequest">GetChangelogRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the changelog to retrieve.
Format: instances/{instance}/databases/{database}/changelogs/{changelog} </p></td>
                </tr>
              
                <tr>
                  <td>view</td>
                  <td><a href="#bytebase.v1.ChangelogView">ChangelogView</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetDatabaseMetadataRequest">GetDatabaseMetadataRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the database to retrieve metadata.
Format: instances/{instance}/databases/{database}/metadata </p></td>
                </tr>
              
                <tr>
                  <td>filter</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Filter is used to filter databases returned in the list.
The syntax and semantics of CEL are documented at https://github.com/google/cel-spec

Supported filter:
- schema: the schema name, support &#34;==&#34; operator.
- table: the table name, support &#34;==&#34; and &#34;.matches()&#34; operator.

For example:
schema == &#34;schema-a&#34;
table == &#34;table-a&#34;
table.matches(&#34;table-a&#34;)
schema == &#34;schema-a&#34; &amp;&amp; table.matches(&#34;sample&#34;)
The filter used to search table with wildcard &#34;sample&#34; in the schema &#34;schemas/schema-a&#34;.
The column masking level will only be returned when a table filter is used. </p></td>
                </tr>
              
                <tr>
                  <td>limit</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>Limit the response size of returned table metadata per schema.
For example, if the database has 3 schemas, and each schema has 100 tables,
if limit is 20, then only 20 tables will be returned for each schema, total 60 tables.
Default 0, means no limit. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetDatabaseRequest">GetDatabaseRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the database to retrieve.
Format: instances/{instance}/databases/{database} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetDatabaseSDLSchemaRequest">GetDatabaseSDLSchemaRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the database to retrieve SDL schema.
Format: instances/{instance}/databases/{database}/sdlSchema </p></td>
                </tr>
              
                <tr>
                  <td>format</td>
                  <td><a href="#bytebase.v1.GetDatabaseSDLSchemaRequest.SDLFormat">GetDatabaseSDLSchemaRequest.SDLFormat</a></td>
                  <td></td>
                  <td><p>The format of the SDL schema output. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetDatabaseSchemaRequest">GetDatabaseSchemaRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the database to retrieve schema.
Format: instances/{instance}/databases/{database}/schema </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetSchemaStringRequest">GetSchemaStringRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the database.
Format: instances/{instance}/databases/{database} </p></td>
                </tr>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.GetSchemaStringRequest.ObjectType">GetSchemaStringRequest.ObjectType</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>schema</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>It&#39;s empty for DATABASE. </p></td>
                </tr>
              
                <tr>
                  <td>object</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>It&#39;s empty for DATABASE and SCHEMA. </p></td>
                </tr>
              
                <tr>
                  <td>metadata</td>
                  <td><a href="#bytebase.v1.DatabaseMetadata">DatabaseMetadata</a></td>
                  <td></td>
                  <td><p>If use the metadata to generate the schema string, the type is OBJECT_TYPE_UNSPECIFIED.
Also the schema and object are empty. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetSchemaStringResponse">GetSchemaStringResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>schema_string</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GridLevel">GridLevel</h3>
        <p>GridLevel defines a tessellation grid level with its density.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>level</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>Grid level number (1-4 for SQL Server) </p></td>
                </tr>
              
                <tr>
                  <td>density</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Grid density (LOW, MEDIUM, HIGH) </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.IndexMetadata">IndexMetadata</h3>
        <p>IndexMetadata is the metadata for indexes.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name is the name of an index. </p></td>
                </tr>
              
                <tr>
                  <td>expressions</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The expressions are the ordered columns or expressions of an index.
This could refer to a column or an expression. </p></td>
                </tr>
              
                <tr>
                  <td>key_length</td>
                  <td><a href="#int64">int64</a></td>
                  <td>repeated</td>
                  <td><p>The key_lengths are the ordered key lengths of an index.
If the key length is not specified, it&#39;s -1. </p></td>
                </tr>
              
                <tr>
                  <td>descending</td>
                  <td><a href="#bool">bool</a></td>
                  <td>repeated</td>
                  <td><p>The descending is the ordered descending of an index. </p></td>
                </tr>
              
                <tr>
                  <td>type</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The type is the type of an index. </p></td>
                </tr>
              
                <tr>
                  <td>unique</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>The unique is whether the index is unique. </p></td>
                </tr>
              
                <tr>
                  <td>primary</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>The primary is whether the index is a primary key index. </p></td>
                </tr>
              
                <tr>
                  <td>visible</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>The visible is whether the index is visible. </p></td>
                </tr>
              
                <tr>
                  <td>comment</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The comment is the comment of an index. </p></td>
                </tr>
              
                <tr>
                  <td>definition</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The definition of an index. </p></td>
                </tr>
              
                <tr>
                  <td>parent_index_schema</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The schema name of the parent index. </p></td>
                </tr>
              
                <tr>
                  <td>parent_index_name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The index name of the parent index. </p></td>
                </tr>
              
                <tr>
                  <td>granularity</td>
                  <td><a href="#int64">int64</a></td>
                  <td></td>
                  <td><p>The number of granules in the block. It&#39;s a ClickHouse specific field. </p></td>
                </tr>
              
                <tr>
                  <td>is_constraint</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>It&#39;s a PostgreSQL specific field.
The unique constraint and unique index are not the same thing in PostgreSQL. </p></td>
                </tr>
              
                <tr>
                  <td>spatial_config</td>
                  <td><a href="#bytebase.v1.SpatialIndexConfig">SpatialIndexConfig</a></td>
                  <td></td>
                  <td><p>Spatial index configuration for spatial databases like SQL Server, PostgreSQL with PostGIS, etc. </p></td>
                </tr>
              
                <tr>
                  <td>opclass_names</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>https://www.postgresql.org/docs/current/catalog-pg-opclass.html
Name of the operator class for each column. (PostgreSQL specific). </p></td>
                </tr>
              
                <tr>
                  <td>opclass_defaults</td>
                  <td><a href="#bool">bool</a></td>
                  <td>repeated</td>
                  <td><p>True if the operator class is the default. (PostgreSQL specific). </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListChangelogsRequest">ListChangelogsRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent of the changelogs.
Format: instances/{instance}/databases/{database} </p></td>
                </tr>
              
                <tr>
                  <td>page_size</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of changelogs to return. The service may return fewer
than this value. If unspecified, at most 10 changelogs will be returned.
The maximum value is 1000; values above 1000 will be coerced to 1000. </p></td>
                </tr>
              
                <tr>
                  <td>page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A page token, received from the previous call.
Provide this to retrieve the subsequent page.

When paginating, all other parameters provided must match
the call that provided the page token. </p></td>
                </tr>
              
                <tr>
                  <td>view</td>
                  <td><a href="#bytebase.v1.ChangelogView">ChangelogView</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>filter</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The filter of the changelogs.
follow the
[ebnf](https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form)
syntax. Support filter by type, source or table. For example: table =
&#34;tableExists(&#39;{database}&#39;, &#39;{schema}&#39;, &#39;{table}&#39;)&#34; table =
&#34;tableExists(&#39;db&#39;, &#39;public&#39;, &#39;table1&#39;) || tableExists(&#39;db&#39;, &#39;public&#39;,
&#39;table2&#39;)&#34;

The table filter follow the CEL syntax.
currently, we have one function for CEL:
- tableExists(database, schema, table): return true if the table exists in
changed resources.

examples:
Use
  tableExists(&#34;db&#34;, &#34;public&#34;, &#34;table1&#34;)
to filter the changelogs which have the table &#34;table1&#34; in the schema
&#34;public&#34; of the database &#34;db&#34;. For MySQL, the schema is always &#34;&#34;, such as
tableExists(&#34;db&#34;, &#34;&#34;, &#34;table1&#34;).

Combine multiple functions with &#34;&amp;&amp;&#34; and &#34;||&#34;, we MUST use the Disjunctive
Normal Form(DNF). In other words, the CEL expression consists of several
parts connected by OR operators. For example, the following expression is
valid:
(
 tableExists(&#34;db&#34;, &#34;public&#34;, &#34;table1&#34;) &amp;&amp;
 tableExists(&#34;db&#34;, &#34;public&#34;, &#34;table2&#34;)
) || (
 tableExists(&#34;db&#34;, &#34;public&#34;, &#34;table3&#34;)
) </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListChangelogsResponse">ListChangelogsResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>changelogs</td>
                  <td><a href="#bytebase.v1.Changelog">Changelog</a></td>
                  <td>repeated</td>
                  <td><p>The list of changelogs. </p></td>
                </tr>
              
                <tr>
                  <td>next_page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A token, which can be sent as `page_token` to retrieve the next page.
If this field is omitted, there are no subsequent pages. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListDatabasesRequest">ListDatabasesRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>- projects/{project}: list databases in a project, require &#34;bb.projects.get&#34; permission.
- workspaces/-: list databases in the workspace, require &#34;bb.databases.list&#34; permission.
- instances/{instances}: list databases in a instance, require &#34;bb.instances.get&#34; permission </p></td>
                </tr>
              
                <tr>
                  <td>page_size</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of databases to return. The service may return fewer
than this value.
If unspecified, at most 10 databases will be returned.
The maximum value is 1000; values above 1000 will be coerced to 1000. </p></td>
                </tr>
              
                <tr>
                  <td>page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A page token, received from a previous `ListDatabases` call.
Provide this to retrieve the subsequent page.

When paginating, all other parameters provided to `ListDatabases` must
match the call that provided the page token. </p></td>
                </tr>
              
                <tr>
                  <td>filter</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Filter is used to filter databases returned in the list.
The syntax and semantics of CEL are documented at https://github.com/google/cel-spec

Supported filter:
- environment: the environment full name in &#34;environments/{id}&#34; format, support &#34;==&#34; operator.
- name: the database name, support &#34;.matches()&#34; operator.
- project: the project full name in &#34;projects/{id}&#34; format, support &#34;==&#34; operator.
- instance: the instance full name in &#34;instances/{id}&#34; format, support &#34;==&#34; operator.
- engine: the database engine, check Engine enum for values. Support &#34;==&#34;, &#34;in [xx]&#34;, &#34;!(in [xx])&#34; operator.
- exclude_unassigned: should be &#34;true&#34; or &#34;false&#34;, will not show unassigned databases if it&#39;s true, support &#34;==&#34; operator.
- drifted: should be &#34;true&#34; or &#34;false&#34;, show drifted databases if it&#39;s true, support &#34;==&#34; operator.
- table: filter by the database table, support &#34;==&#34; and &#34;.matches()&#34; operator.
- labels.{key}: the database label, support &#34;==&#34; and &#34;in&#34; operators.

For example:
environment == &#34;environments/{environment resource id}&#34;
environment == &#34;&#34; (find databases which environment is not set)
project == &#34;projects/{project resource id}&#34;
instance == &#34;instances/{instance resource id}&#34;
name.matches(&#34;database name&#34;)
engine == &#34;MYSQL&#34;
engine in [&#34;MYSQL&#34;, &#34;POSTGRES&#34;]
!(engine in [&#34;MYSQL&#34;, &#34;POSTGRES&#34;])
exclude_unassigned == true
drifted == true
table == &#34;sample&#34;
table.matches(&#34;sam&#34;)
labels.environment == &#34;production&#34;
labels.region == &#34;asia&#34;
labels.region in [&#34;asia&#34;, &#34;europe&#34;]

You can combine filter conditions like:
environment == &#34;environments/prod&#34; &amp;&amp; name.matches(&#34;employee&#34;) </p></td>
                </tr>
              
                <tr>
                  <td>show_deleted</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Show deleted database if specified. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListDatabasesResponse">ListDatabasesResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>databases</td>
                  <td><a href="#bytebase.v1.Database">Database</a></td>
                  <td>repeated</td>
                  <td><p>The databases from the specified request. </p></td>
                </tr>
              
                <tr>
                  <td>next_page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A token, which can be sent as `page_token` to retrieve the next page.
If this field is omitted, there are no subsequent pages. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.MaterializedViewMetadata">MaterializedViewMetadata</h3>
        <p>MaterializedViewMetadata is the metadata for materialized views.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name is the name of a materialized view. </p></td>
                </tr>
              
                <tr>
                  <td>definition</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The definition is the definition of a materialized view. </p></td>
                </tr>
              
                <tr>
                  <td>comment</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The comment is the comment of a materialized view. </p></td>
                </tr>
              
                <tr>
                  <td>dependency_columns</td>
                  <td><a href="#bytebase.v1.DependencyColumn">DependencyColumn</a></td>
                  <td>repeated</td>
                  <td><p>The dependency_columns is the list of dependency columns of a materialized
view. </p></td>
                </tr>
              
                <tr>
                  <td>triggers</td>
                  <td><a href="#bytebase.v1.TriggerMetadata">TriggerMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The columns is the ordered list of columns in a table. </p></td>
                </tr>
              
                <tr>
                  <td>indexes</td>
                  <td><a href="#bytebase.v1.IndexMetadata">IndexMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The indexes is the list of indexes in a table. </p></td>
                </tr>
              
                <tr>
                  <td>skip_dump</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.PackageMetadata">PackageMetadata</h3>
        <p>PackageMetadata is the metadata for packages.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name is the name of a package. </p></td>
                </tr>
              
                <tr>
                  <td>definition</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The definition is the definition of a package. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ProcedureMetadata">ProcedureMetadata</h3>
        <p>ProcedureMetadata is the metadata for procedures.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name is the name of a procedure. </p></td>
                </tr>
              
                <tr>
                  <td>definition</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The definition is the definition of a procedure. </p></td>
                </tr>
              
                <tr>
                  <td>signature</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The signature is the name with the number and type of input arguments the
procedure takes. </p></td>
                </tr>
              
                <tr>
                  <td>character_set_client</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>MySQL specific metadata. </p></td>
                </tr>
              
                <tr>
                  <td>collation_connection</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>database_collation</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>sql_mode</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>comment</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The comment is the comment of a procedure. </p></td>
                </tr>
              
                <tr>
                  <td>skip_dump</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SchemaMetadata">SchemaMetadata</h3>
        <p>SchemaMetadata is the metadata for schemas.</p><p>This is the concept of schema in Postgres, but it's a no-op for MySQL.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name is the schema name.
It is an empty string for databases without such concept such as MySQL. </p></td>
                </tr>
              
                <tr>
                  <td>tables</td>
                  <td><a href="#bytebase.v1.TableMetadata">TableMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The tables is the list of tables in a schema. </p></td>
                </tr>
              
                <tr>
                  <td>external_tables</td>
                  <td><a href="#bytebase.v1.ExternalTableMetadata">ExternalTableMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The external_tables is the list of external tables in a schema. </p></td>
                </tr>
              
                <tr>
                  <td>views</td>
                  <td><a href="#bytebase.v1.ViewMetadata">ViewMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The views is the list of views in a schema. </p></td>
                </tr>
              
                <tr>
                  <td>functions</td>
                  <td><a href="#bytebase.v1.FunctionMetadata">FunctionMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The functions is the list of functions in a schema. </p></td>
                </tr>
              
                <tr>
                  <td>procedures</td>
                  <td><a href="#bytebase.v1.ProcedureMetadata">ProcedureMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The procedures is the list of procedures in a schema. </p></td>
                </tr>
              
                <tr>
                  <td>streams</td>
                  <td><a href="#bytebase.v1.StreamMetadata">StreamMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The streams is the list of streams in a schema, currently, only used for
Snowflake. </p></td>
                </tr>
              
                <tr>
                  <td>tasks</td>
                  <td><a href="#bytebase.v1.TaskMetadata">TaskMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The routines is the list of routines in a schema, currently, only used for
Snowflake. </p></td>
                </tr>
              
                <tr>
                  <td>materialized_views</td>
                  <td><a href="#bytebase.v1.MaterializedViewMetadata">MaterializedViewMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The materialized_views is the list of materialized views in a schema. </p></td>
                </tr>
              
                <tr>
                  <td>packages</td>
                  <td><a href="#bytebase.v1.PackageMetadata">PackageMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The packages is the list of packages in a schema. </p></td>
                </tr>
              
                <tr>
                  <td>owner</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The owner of the schema. </p></td>
                </tr>
              
                <tr>
                  <td>sequences</td>
                  <td><a href="#bytebase.v1.SequenceMetadata">SequenceMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The sequences is the list of sequences in a schema, sorted by name. </p></td>
                </tr>
              
                <tr>
                  <td>events</td>
                  <td><a href="#bytebase.v1.EventMetadata">EventMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The events is the list of scheduled events in a schema. </p></td>
                </tr>
              
                <tr>
                  <td>enum_types</td>
                  <td><a href="#bytebase.v1.EnumTypeMetadata">EnumTypeMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The enum_types is the list of user-defined enum types in a schema. </p></td>
                </tr>
              
                <tr>
                  <td>skip_dump</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether to skip this schema during schema dump operations. </p></td>
                </tr>
              
                <tr>
                  <td>comment</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The comment is the comment of a schema. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SequenceMetadata">SequenceMetadata</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of a sequence. </p></td>
                </tr>
              
                <tr>
                  <td>data_type</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The data type of a sequence. </p></td>
                </tr>
              
                <tr>
                  <td>start</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The start value of a sequence. </p></td>
                </tr>
              
                <tr>
                  <td>min_value</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The minimum value of a sequence. </p></td>
                </tr>
              
                <tr>
                  <td>max_value</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The maximum value of a sequence. </p></td>
                </tr>
              
                <tr>
                  <td>increment</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Increment value of a sequence. </p></td>
                </tr>
              
                <tr>
                  <td>cycle</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Cycle is whether the sequence cycles. </p></td>
                </tr>
              
                <tr>
                  <td>cache_size</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Cache size of a sequence. </p></td>
                </tr>
              
                <tr>
                  <td>last_value</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Last value of a sequence. </p></td>
                </tr>
              
                <tr>
                  <td>owner_table</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The owner table of the sequence. </p></td>
                </tr>
              
                <tr>
                  <td>owner_column</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The owner column of the sequence. </p></td>
                </tr>
              
                <tr>
                  <td>comment</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The comment describing the sequence. </p></td>
                </tr>
              
                <tr>
                  <td>skip_dump</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether to skip this sequence during schema dump operations. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SpatialIndexConfig">SpatialIndexConfig</h3>
        <p>SpatialIndexConfig defines the spatial index configuration for spatial databases.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>method</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Spatial indexing method (e.g., &#34;SPATIAL&#34;, &#34;R-TREE&#34;, &#34;GIST&#34;) </p></td>
                </tr>
              
                <tr>
                  <td>tessellation</td>
                  <td><a href="#bytebase.v1.TessellationConfig">TessellationConfig</a></td>
                  <td></td>
                  <td><p>Tessellation configuration for grid-based spatial indexes </p></td>
                </tr>
              
                <tr>
                  <td>storage</td>
                  <td><a href="#bytebase.v1.StorageConfig">StorageConfig</a></td>
                  <td></td>
                  <td><p>Storage and performance configuration </p></td>
                </tr>
              
                <tr>
                  <td>dimensional</td>
                  <td><a href="#bytebase.v1.DimensionalConfig">DimensionalConfig</a></td>
                  <td></td>
                  <td><p>Dimensional configuration </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.StorageConfig">StorageConfig</h3>
        <p>StorageConfig defines storage and performance parameters for spatial indexes.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>fillfactor</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>Fill factor percentage (1-100) </p></td>
                </tr>
              
                <tr>
                  <td>buffering</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Buffering mode for PostgreSQL (auto, on, off) </p></td>
                </tr>
              
                <tr>
                  <td>tablespace</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Tablespace configuration for Oracle </p></td>
                </tr>
              
                <tr>
                  <td>work_tablespace</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>sdo_level</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>commit_interval</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>pad_index</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>SQL Server specific parameters </p></td>
                </tr>
              
                <tr>
                  <td>sort_in_tempdb</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>ON, OFF </p></td>
                </tr>
              
                <tr>
                  <td>drop_existing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>online</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>allow_row_locks</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>allow_page_locks</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>maxdop</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>data_compression</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>NONE, ROW, PAGE </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.StreamMetadata">StreamMetadata</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name is the name of a stream. </p></td>
                </tr>
              
                <tr>
                  <td>table_name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The table_name is the name of the table/view that the stream is created on. </p></td>
                </tr>
              
                <tr>
                  <td>owner</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The owner of the stream. </p></td>
                </tr>
              
                <tr>
                  <td>comment</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The comment of the stream. </p></td>
                </tr>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.StreamMetadata.Type">StreamMetadata.Type</a></td>
                  <td></td>
                  <td><p>The type of the stream. </p></td>
                </tr>
              
                <tr>
                  <td>stale</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Indicates whether the stream was last read before the `stale_after` time. </p></td>
                </tr>
              
                <tr>
                  <td>mode</td>
                  <td><a href="#bytebase.v1.StreamMetadata.Mode">StreamMetadata.Mode</a></td>
                  <td></td>
                  <td><p>The mode of the stream. </p></td>
                </tr>
              
                <tr>
                  <td>definition</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The definition of the stream. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SyncDatabaseRequest">SyncDatabaseRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the database to sync.
Format: instances/{instance}/databases/{database} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SyncDatabaseResponse">SyncDatabaseResponse</h3>
        <p></p>

        

        
      
        <h3 id="bytebase.v1.TableMetadata">TableMetadata</h3>
        <p>TableMetadata is the metadata for tables.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name is the name of a table. </p></td>
                </tr>
              
                <tr>
                  <td>columns</td>
                  <td><a href="#bytebase.v1.ColumnMetadata">ColumnMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The columns is the ordered list of columns in a table. </p></td>
                </tr>
              
                <tr>
                  <td>indexes</td>
                  <td><a href="#bytebase.v1.IndexMetadata">IndexMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The indexes is the list of indexes in a table. </p></td>
                </tr>
              
                <tr>
                  <td>engine</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The engine is the engine of a table. </p></td>
                </tr>
              
                <tr>
                  <td>collation</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The collation is the collation of a table. </p></td>
                </tr>
              
                <tr>
                  <td>charset</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The character set of table. </p></td>
                </tr>
              
                <tr>
                  <td>row_count</td>
                  <td><a href="#int64">int64</a></td>
                  <td></td>
                  <td><p>The row_count is the estimated number of rows of a table. </p></td>
                </tr>
              
                <tr>
                  <td>data_size</td>
                  <td><a href="#int64">int64</a></td>
                  <td></td>
                  <td><p>The data_size is the estimated data size of a table. </p></td>
                </tr>
              
                <tr>
                  <td>index_size</td>
                  <td><a href="#int64">int64</a></td>
                  <td></td>
                  <td><p>The index_size is the estimated index size of a table. </p></td>
                </tr>
              
                <tr>
                  <td>data_free</td>
                  <td><a href="#int64">int64</a></td>
                  <td></td>
                  <td><p>The data_free is the estimated free data size of a table. </p></td>
                </tr>
              
                <tr>
                  <td>create_options</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The create_options is the create option of a table. </p></td>
                </tr>
              
                <tr>
                  <td>comment</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The comment is the comment of a table. </p></td>
                </tr>
              
                <tr>
                  <td>foreign_keys</td>
                  <td><a href="#bytebase.v1.ForeignKeyMetadata">ForeignKeyMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The foreign_keys is the list of foreign keys in a table. </p></td>
                </tr>
              
                <tr>
                  <td>partitions</td>
                  <td><a href="#bytebase.v1.TablePartitionMetadata">TablePartitionMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The partitions is the list of partitions in a table. </p></td>
                </tr>
              
                <tr>
                  <td>check_constraints</td>
                  <td><a href="#bytebase.v1.CheckConstraintMetadata">CheckConstraintMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The check_constraints is the list of check constraints in a table. </p></td>
                </tr>
              
                <tr>
                  <td>owner</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The owner of the table. </p></td>
                </tr>
              
                <tr>
                  <td>sorting_keys</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The sorting_keys is a tuple of column names or arbitrary expressions. ClickHouse specific field.
Reference: https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/mergetree#order_by </p></td>
                </tr>
              
                <tr>
                  <td>triggers</td>
                  <td><a href="#bytebase.v1.TriggerMetadata">TriggerMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The triggers is the list of triggers associated with the table. </p></td>
                </tr>
              
                <tr>
                  <td>skip_dump</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether to skip this table during schema dump operations. </p></td>
                </tr>
              
                <tr>
                  <td>sharding_info</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>https://docs.pingcap.com/tidb/stable/information-schema-tables/ </p></td>
                </tr>
              
                <tr>
                  <td>primary_key_type</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>https://docs.pingcap.com/tidb/stable/clustered-indexes/#clustered-indexes
CLUSTERED or NONCLUSTERED. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TablePartitionMetadata">TablePartitionMetadata</h3>
        <p>TablePartitionMetadata is the metadata for table partitions.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name is the name of a table partition. </p></td>
                </tr>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.TablePartitionMetadata.Type">TablePartitionMetadata.Type</a></td>
                  <td></td>
                  <td><p>The type of a table partition. </p></td>
                </tr>
              
                <tr>
                  <td>expression</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The expression is the expression of a table partition.
For PostgreSQL, the expression is the text of {FOR VALUES
partition_bound_spec}, see
https://www.postgresql.org/docs/current/sql-createtable.html. For MySQL,
the expression is the `expr` or `column_list` of the following syntax.
PARTITION BY
   { [LINEAR] HASH(expr)
   | [LINEAR] KEY [ALGORITHM={1 | 2}] (column_list)
   | RANGE{(expr) | COLUMNS(column_list)}
   | LIST{(expr) | COLUMNS(column_list)} }. </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The value is the value of a table partition.
For MySQL, the value is for RANGE and LIST partition types,
- For a RANGE partition, it contains the value set in the partition&#39;s
VALUES LESS THAN clause, which can be either an integer or MAXVALUE.
- For a LIST partition, this column contains the values defined in the
partition&#39;s VALUES IN clause, which is a list of comma-separated integer
values.
- For others, it&#39;s an empty string. </p></td>
                </tr>
              
                <tr>
                  <td>use_default</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The use_default is whether the users use the default partition, it stores
the different value for different database engines. For MySQL, it&#39;s [INT]
type, 0 means not use default partition, otherwise, it&#39;s equals to number
in syntax [SUB]PARTITION {number}. </p></td>
                </tr>
              
                <tr>
                  <td>subpartitions</td>
                  <td><a href="#bytebase.v1.TablePartitionMetadata">TablePartitionMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The subpartitions is the list of subpartitions in a table partition. </p></td>
                </tr>
              
                <tr>
                  <td>indexes</td>
                  <td><a href="#bytebase.v1.IndexMetadata">IndexMetadata</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>check_constraints</td>
                  <td><a href="#bytebase.v1.CheckConstraintMetadata">CheckConstraintMetadata</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TaskMetadata">TaskMetadata</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name is the name of a task. </p></td>
                </tr>
              
                <tr>
                  <td>id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The id is the snowflake-generated id of a task.
Example: 01ad32a0-1bb6-5e93-0000-000000000001 </p></td>
                </tr>
              
                <tr>
                  <td>owner</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The owner of the task. </p></td>
                </tr>
              
                <tr>
                  <td>comment</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The comment of the task. </p></td>
                </tr>
              
                <tr>
                  <td>warehouse</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The warehouse of the task. </p></td>
                </tr>
              
                <tr>
                  <td>schedule</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The schedule interval of the task. </p></td>
                </tr>
              
                <tr>
                  <td>predecessors</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The predecessor tasks of the task. </p></td>
                </tr>
              
                <tr>
                  <td>state</td>
                  <td><a href="#bytebase.v1.TaskMetadata.State">TaskMetadata.State</a></td>
                  <td></td>
                  <td><p>The state of the task. </p></td>
                </tr>
              
                <tr>
                  <td>condition</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The condition of the task. </p></td>
                </tr>
              
                <tr>
                  <td>definition</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The definition of the task. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TessellationConfig">TessellationConfig</h3>
        <p>TessellationConfig defines tessellation parameters for spatial indexes.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>scheme</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Tessellation scheme (e.g., &#34;GEOMETRY_GRID&#34;, &#34;GEOGRAPHY_GRID&#34;, &#34;GEOMETRY_AUTO_GRID&#34;) </p></td>
                </tr>
              
                <tr>
                  <td>grid_levels</td>
                  <td><a href="#bytebase.v1.GridLevel">GridLevel</a></td>
                  <td>repeated</td>
                  <td><p>Grid levels and densities for multi-level tessellation </p></td>
                </tr>
              
                <tr>
                  <td>cells_per_object</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>Number of cells per object (1-8192 for SQL Server) </p></td>
                </tr>
              
                <tr>
                  <td>bounding_box</td>
                  <td><a href="#bytebase.v1.BoundingBox">BoundingBox</a></td>
                  <td></td>
                  <td><p>Bounding box for GEOMETRY tessellation (not used for GEOGRAPHY) </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TriggerMetadata">TriggerMetadata</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name is the name of the trigger. </p></td>
                </tr>
              
                <tr>
                  <td>event</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The event is the event of the trigger, such as INSERT, UPDATE, DELETE,
TRUNCATE. </p></td>
                </tr>
              
                <tr>
                  <td>timing</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The timing is the timing of the trigger, such as BEFORE, AFTER. </p></td>
                </tr>
              
                <tr>
                  <td>body</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The body is the body of the trigger. </p></td>
                </tr>
              
                <tr>
                  <td>sql_mode</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The SQL mode setting for the trigger. </p></td>
                </tr>
              
                <tr>
                  <td>character_set_client</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The character set used by the client creating the trigger. </p></td>
                </tr>
              
                <tr>
                  <td>collation_connection</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The collation used for the connection when creating the trigger. </p></td>
                </tr>
              
                <tr>
                  <td>comment</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The comment describing the trigger. </p></td>
                </tr>
              
                <tr>
                  <td>skip_dump</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether to skip this trigger during schema dump operations. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UpdateDatabaseRequest">UpdateDatabaseRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>database</td>
                  <td><a href="#bytebase.v1.Database">Database</a></td>
                  <td></td>
                  <td><p>The database to update.

The database&#39;s `name` field is used to identify the database to update.
Format: instances/{instance}/databases/{database} </p></td>
                </tr>
              
                <tr>
                  <td>update_mask</td>
                  <td><a href="#google.protobuf.FieldMask">google.protobuf.FieldMask</a></td>
                  <td></td>
                  <td><p>The list of fields to update. </p></td>
                </tr>
              
                <tr>
                  <td>allow_missing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, and the database is not found, a new database will be created.
In this situation, `update_mask` is ignored. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ViewMetadata">ViewMetadata</h3>
        <p>ViewMetadata is the metadata for views.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name is the name of a view. </p></td>
                </tr>
              
                <tr>
                  <td>definition</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The definition is the definition of a view. </p></td>
                </tr>
              
                <tr>
                  <td>comment</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The comment is the comment of a view. </p></td>
                </tr>
              
                <tr>
                  <td>dependency_columns</td>
                  <td><a href="#bytebase.v1.DependencyColumn">DependencyColumn</a></td>
                  <td>repeated</td>
                  <td><p>The dependency_columns is the list of dependency columns of a view. </p></td>
                </tr>
              
                <tr>
                  <td>columns</td>
                  <td><a href="#bytebase.v1.ColumnMetadata">ColumnMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The columns is the ordered list of columns in a table. </p></td>
                </tr>
              
                <tr>
                  <td>triggers</td>
                  <td><a href="#bytebase.v1.TriggerMetadata">TriggerMetadata</a></td>
                  <td>repeated</td>
                  <td><p>The triggers is the list of triggers in a view. </p></td>
                </tr>
              
                <tr>
                  <td>skip_dump</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.Changelog.Status">Changelog.Status</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>STATUS_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>PENDING</td>
                <td>1</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>DONE</td>
                <td>2</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FAILED</td>
                <td>3</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.Changelog.Type">Changelog.Type</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>BASELINE</td>
                <td>1</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>MIGRATE</td>
                <td>2</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>SDL</td>
                <td>3</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.ChangelogView">ChangelogView</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>CHANGELOG_VIEW_UNSPECIFIED</td>
                <td>0</td>
                <td><p>The default / unset value.
The API will default to the BASIC view.</p></td>
              </tr>
            
              <tr>
                <td>CHANGELOG_VIEW_BASIC</td>
                <td>1</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>CHANGELOG_VIEW_FULL</td>
                <td>2</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.ColumnMetadata.IdentityGeneration">ColumnMetadata.IdentityGeneration</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>IDENTITY_GENERATION_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>ALWAYS</td>
                <td>1</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>BY_DEFAULT</td>
                <td>2</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.GenerationMetadata.Type">GenerationMetadata.Type</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>VIRTUAL</td>
                <td>1</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STORED</td>
                <td>2</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.GetDatabaseSDLSchemaRequest.SDLFormat">GetDatabaseSDLSchemaRequest.SDLFormat</h3>
        <p>SDLFormat specifies the output format for SDL schema.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>SDL_FORMAT_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified format. Defaults to SINGLE_FILE.</p></td>
              </tr>
            
              <tr>
                <td>SINGLE_FILE</td>
                <td>1</td>
                <td><p>Single file format: returns the complete SDL schema as a single file.</p></td>
              </tr>
            
              <tr>
                <td>MULTI_FILE</td>
                <td>2</td>
                <td><p>Multi-file format: returns the SDL schema as a ZIP archive containing
multiple files organized by schema objects (tables, views, functions, etc.).</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.GetSchemaStringRequest.ObjectType">GetSchemaStringRequest.ObjectType</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>OBJECT_TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>DATABASE</td>
                <td>1</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>SCHEMA</td>
                <td>2</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>TABLE</td>
                <td>3</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>VIEW</td>
                <td>4</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>MATERIALIZED_VIEW</td>
                <td>5</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FUNCTION</td>
                <td>6</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>PROCEDURE</td>
                <td>7</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>SEQUENCE</td>
                <td>8</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.StreamMetadata.Mode">StreamMetadata.Mode</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>MODE_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>DEFAULT</td>
                <td>1</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>APPEND_ONLY</td>
                <td>2</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>INSERT_ONLY</td>
                <td>3</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.StreamMetadata.Type">StreamMetadata.Type</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>DELTA</td>
                <td>1</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.TablePartitionMetadata.Type">TablePartitionMetadata.Type</h3>
        <p>Type is the type of a table partition, some database engines may not</p><p>support all types. Only avilable for the following database engines now:</p><p>MySQL: RANGE, RANGE COLUMNS, LIST, LIST COLUMNS, HASH, LINEAR HASH, KEY,</p><p>LINEAR_KEY</p><p>(https://dev.mysql.com/doc/refman/8.0/en/partitioning-types.html) TiDB:</p><p>RANGE, RANGE COLUMNS, LIST, LIST COLUMNS, HASH, KEY PostgreSQL: RANGE,</p><p>LIST, HASH (https://www.postgresql.org/docs/current/ddl-partitioning.html)</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>RANGE</td>
                <td>1</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>RANGE_COLUMNS</td>
                <td>2</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>LIST</td>
                <td>3</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>LIST_COLUMNS</td>
                <td>4</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>HASH</td>
                <td>5</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>LINEAR_HASH</td>
                <td>6</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>KEY</td>
                <td>7</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>LINEAR_KEY</td>
                <td>8</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.TaskMetadata.State">TaskMetadata.State</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>STATE_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STARTED</td>
                <td>1</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>SUSPENDED</td>
                <td>2</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
        <h3 id="bytebase.v1.DatabaseService">DatabaseService</h3>
        <p>DatabaseService manages databases and their schemas.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>GetDatabase</td>
                <td><a href="#bytebase.v1.GetDatabaseRequest">GetDatabaseRequest</a></td>
                <td><a href="#bytebase.v1.Database">Database</a></td>
                <td><p>Retrieves a database by name.
Permissions required: bb.databases.get</p></td>
              </tr>
            
              <tr>
                <td>BatchGetDatabases</td>
                <td><a href="#bytebase.v1.BatchGetDatabasesRequest">BatchGetDatabasesRequest</a></td>
                <td><a href="#bytebase.v1.BatchGetDatabasesResponse">BatchGetDatabasesResponse</a></td>
                <td><p>Retrieves multiple databases by their names.
Permissions required: bb.databases.get</p></td>
              </tr>
            
              <tr>
                <td>ListDatabases</td>
                <td><a href="#bytebase.v1.ListDatabasesRequest">ListDatabasesRequest</a></td>
                <td><a href="#bytebase.v1.ListDatabasesResponse">ListDatabasesResponse</a></td>
                <td><p>Lists databases in a project, instance, or workspace.
Permissions required: bb.projects.get (for project parent), bb.databases.list (for workspace parent), or bb.instances.get (for instance parent)</p></td>
              </tr>
            
              <tr>
                <td>UpdateDatabase</td>
                <td><a href="#bytebase.v1.UpdateDatabaseRequest">UpdateDatabaseRequest</a></td>
                <td><a href="#bytebase.v1.Database">Database</a></td>
                <td><p>Updates database properties such as labels and project assignment.
Permissions required: bb.databases.update</p></td>
              </tr>
            
              <tr>
                <td>BatchUpdateDatabases</td>
                <td><a href="#bytebase.v1.BatchUpdateDatabasesRequest">BatchUpdateDatabasesRequest</a></td>
                <td><a href="#bytebase.v1.BatchUpdateDatabasesResponse">BatchUpdateDatabasesResponse</a></td>
                <td><p>Updates multiple databases in a single batch operation.
Permissions required: bb.databases.update</p></td>
              </tr>
            
              <tr>
                <td>SyncDatabase</td>
                <td><a href="#bytebase.v1.SyncDatabaseRequest">SyncDatabaseRequest</a></td>
                <td><a href="#bytebase.v1.SyncDatabaseResponse">SyncDatabaseResponse</a></td>
                <td><p>Synchronizes database schema from the instance.
Permissions required: bb.databases.sync</p></td>
              </tr>
            
              <tr>
                <td>BatchSyncDatabases</td>
                <td><a href="#bytebase.v1.BatchSyncDatabasesRequest">BatchSyncDatabasesRequest</a></td>
                <td><a href="#bytebase.v1.BatchSyncDatabasesResponse">BatchSyncDatabasesResponse</a></td>
                <td><p>Synchronizes multiple databases in a single batch operation.
Permissions required: bb.databases.sync</p></td>
              </tr>
            
              <tr>
                <td>GetDatabaseMetadata</td>
                <td><a href="#bytebase.v1.GetDatabaseMetadataRequest">GetDatabaseMetadataRequest</a></td>
                <td><a href="#bytebase.v1.DatabaseMetadata">DatabaseMetadata</a></td>
                <td><p>Retrieves database metadata including tables, columns, and indexes.
Permissions required: bb.databases.getSchema</p></td>
              </tr>
            
              <tr>
                <td>GetDatabaseSchema</td>
                <td><a href="#bytebase.v1.GetDatabaseSchemaRequest">GetDatabaseSchemaRequest</a></td>
                <td><a href="#bytebase.v1.DatabaseSchema">DatabaseSchema</a></td>
                <td><p>Retrieves database schema as DDL statements.
Permissions required: bb.databases.getSchema</p></td>
              </tr>
            
              <tr>
                <td>GetDatabaseSDLSchema</td>
                <td><a href="#bytebase.v1.GetDatabaseSDLSchemaRequest">GetDatabaseSDLSchemaRequest</a></td>
                <td><a href="#bytebase.v1.DatabaseSDLSchema">DatabaseSDLSchema</a></td>
                <td><p>Retrieves database schema in SDL (Schema Definition Language) format.
Permissions required: bb.databases.getSchema</p></td>
              </tr>
            
              <tr>
                <td>DiffSchema</td>
                <td><a href="#bytebase.v1.DiffSchemaRequest">DiffSchemaRequest</a></td>
                <td><a href="#bytebase.v1.DiffSchemaResponse">DiffSchemaResponse</a></td>
                <td><p>Compares and generates migration statements between two schemas.
Permissions required: bb.databases.get</p></td>
              </tr>
            
              <tr>
                <td>ListChangelogs</td>
                <td><a href="#bytebase.v1.ListChangelogsRequest">ListChangelogsRequest</a></td>
                <td><a href="#bytebase.v1.ListChangelogsResponse">ListChangelogsResponse</a></td>
                <td><p>Lists migration history for a database.
Permissions required: bb.changelogs.list</p></td>
              </tr>
            
              <tr>
                <td>GetChangelog</td>
                <td><a href="#bytebase.v1.GetChangelogRequest">GetChangelogRequest</a></td>
                <td><a href="#bytebase.v1.Changelog">Changelog</a></td>
                <td><p>Retrieves a specific changelog entry.
Permissions required: bb.changelogs.get</p></td>
              </tr>
            
              <tr>
                <td>GetSchemaString</td>
                <td><a href="#bytebase.v1.GetSchemaStringRequest">GetSchemaStringRequest</a></td>
                <td><a href="#bytebase.v1.GetSchemaStringResponse">GetSchemaStringResponse</a></td>
                <td><p>Generates schema DDL for a database object.
Permissions required: bb.databases.getSchema</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>GetDatabase</td>
                <td>GET</td>
                <td>/v1/{name=instances/*/databases/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>BatchGetDatabases</td>
                <td>GET</td>
                <td>/v1/{parent=projects/*}/databases:batchGet</td>
                <td></td>
              </tr>
              
              <tr>
                <td>BatchGetDatabases</td>
                <td>GET</td>
                <td>/v1/{parent=instances/*}/databases:batchGet</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>ListDatabases</td>
                <td>GET</td>
                <td>/v1/{parent=projects/*}/databases</td>
                <td></td>
              </tr>
              
              <tr>
                <td>ListDatabases</td>
                <td>GET</td>
                <td>/v1/{parent=instances/*}/databases</td>
                <td></td>
              </tr>
              
              <tr>
                <td>ListDatabases</td>
                <td>GET</td>
                <td>/v1/{parent=workspaces/*}/databases</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>UpdateDatabase</td>
                <td>PATCH</td>
                <td>/v1/{database.name=instances/*/databases/*}</td>
                <td>database</td>
              </tr>
              
            
              
              
              <tr>
                <td>BatchUpdateDatabases</td>
                <td>POST</td>
                <td>/v1/{parent=instances/*}/databases:batchUpdate</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>SyncDatabase</td>
                <td>POST</td>
                <td>/v1/{name=instances/*/databases/*}:sync</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>BatchSyncDatabases</td>
                <td>POST</td>
                <td>/v1/{parent=instances/*}/databases:batchSync</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>GetDatabaseMetadata</td>
                <td>GET</td>
                <td>/v1/{name=instances/*/databases/*/metadata}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>GetDatabaseSchema</td>
                <td>GET</td>
                <td>/v1/{name=instances/*/databases/*/schema}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>GetDatabaseSDLSchema</td>
                <td>GET</td>
                <td>/v1/{name=instances/*/databases/*/sdlSchema}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>DiffSchema</td>
                <td>POST</td>
                <td>/v1/{name=instances/*/databases/*}:diffSchema</td>
                <td>*</td>
              </tr>
              
              <tr>
                <td>DiffSchema</td>
                <td>POST</td>
                <td>/v1/{name=instances/*/databases/*/changelogs/*}:diffSchema</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>ListChangelogs</td>
                <td>GET</td>
                <td>/v1/{parent=instances/*/databases/*}/changelogs</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>GetChangelog</td>
                <td>GET</td>
                <td>/v1/{name=instances/*/databases/*/changelogs/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>GetSchemaString</td>
                <td>GET</td>
                <td>/v1/{name=instances/*/databases/*/schemaString}</td>
                <td></td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/group_service.proto">v1/group_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.BatchGetGroupsRequest">BatchGetGroupsRequest</h3>
        <p>Request message for batch getting groups.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>names</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The group names to retrieve.
Format: groups/{email} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchGetGroupsResponse">BatchGetGroupsResponse</h3>
        <p>Response message for batch getting groups.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>groups</td>
                  <td><a href="#bytebase.v1.Group">Group</a></td>
                  <td>repeated</td>
                  <td><p>The groups from the specified request. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.CreateGroupRequest">CreateGroupRequest</h3>
        <p>Request message for creating a group.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>group</td>
                  <td><a href="#bytebase.v1.Group">Group</a></td>
                  <td></td>
                  <td><p>The group to create. </p></td>
                </tr>
              
                <tr>
                  <td>group_email</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The email to use for the group, which will become the final component
of the group&#39;s resource name. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DeleteGroupRequest">DeleteGroupRequest</h3>
        <p>Request message for deleting a group.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the group to delete.
Format: groups/{email} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetGroupRequest">GetGroupRequest</h3>
        <p>Request message for getting a group.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the group to retrieve.
Format: groups/{email} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Group">Group</h3>
        <p>A group of users within the workspace.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the group to retrieve.
Format: groups/{group}, the group should be email or uuid. </p></td>
                </tr>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The display title of the group. </p></td>
                </tr>
              
                <tr>
                  <td>description</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The description of the group. </p></td>
                </tr>
              
                <tr>
                  <td>members</td>
                  <td><a href="#bytebase.v1.GroupMember">GroupMember</a></td>
                  <td>repeated</td>
                  <td><p>The members of the group. </p></td>
                </tr>
              
                <tr>
                  <td>source</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The source system where the group originated (e.g., Entra ID for SCIM sync). </p></td>
                </tr>
              
                <tr>
                  <td>email</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The unique email for the group. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GroupMember">GroupMember</h3>
        <p>A member of a group with a role.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>member</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Member is the principal who belong to this group.

Format: users/hello@world.com </p></td>
                </tr>
              
                <tr>
                  <td>role</td>
                  <td><a href="#bytebase.v1.GroupMember.Role">GroupMember.Role</a></td>
                  <td></td>
                  <td><p>The member&#39;s role in the group. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListGroupsRequest">ListGroupsRequest</h3>
        <p>Request message for listing groups.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>page_size</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of groups to return. The service may return fewer than
this value.
If unspecified, at most 10 groups will be returned.
The maximum value is 1000; values above 1000 will be coerced to 1000. </p></td>
                </tr>
              
                <tr>
                  <td>page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A page token, received from a previous `ListGroups` call.
Provide this to retrieve the subsequent page.

When paginating, all other parameters provided to `ListGroups` must match
the call that provided the page token. </p></td>
                </tr>
              
                <tr>
                  <td>filter</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Filter is used to filter groups returned in the list.
The syntax and semantics of CEL are documented at https://github.com/google/cel-spec

Supported filter:
- title: the group title, support &#34;==&#34; and &#34;.matches()&#34; operator.
- email: the group email, support &#34;==&#34; and &#34;.matches()&#34; operator.
- project: the project full name in &#34;projects/{id}&#34; format, support &#34;==&#34; operator.

For example:
title == &#34;dba&#34;
email == &#34;dba@bytebase.com&#34;
title.matches(&#34;dba&#34;)
email.matches(&#34;dba&#34;)
project == &#34;projects/sample-project&#34;
You can combine filter conditions like:
title.matches(&#34;dba&#34;) || email.matches(&#34;dba&#34;) </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListGroupsResponse">ListGroupsResponse</h3>
        <p>Response message for listing groups.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>groups</td>
                  <td><a href="#bytebase.v1.Group">Group</a></td>
                  <td>repeated</td>
                  <td><p>The groups from the specified request. </p></td>
                </tr>
              
                <tr>
                  <td>next_page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A token, which can be sent as `page_token` to retrieve the next page.
If this field is omitted, there are no subsequent pages. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UpdateGroupRequest">UpdateGroupRequest</h3>
        <p>Request message for updating a group.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>group</td>
                  <td><a href="#bytebase.v1.Group">Group</a></td>
                  <td></td>
                  <td><p>The group to update.

The group&#39;s `name` field is used to identify the group to update.
Format: groups/{email} </p></td>
                </tr>
              
                <tr>
                  <td>update_mask</td>
                  <td><a href="#google.protobuf.FieldMask">google.protobuf.FieldMask</a></td>
                  <td></td>
                  <td><p>The list of fields to update. </p></td>
                </tr>
              
                <tr>
                  <td>allow_missing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, and the group is not found, a new group will be created.
In this situation, `update_mask` is ignored. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.GroupMember.Role">GroupMember.Role</h3>
        <p>The role of a group member.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>ROLE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified role.</p></td>
              </tr>
            
              <tr>
                <td>OWNER</td>
                <td>1</td>
                <td><p>Group owner.</p></td>
              </tr>
            
              <tr>
                <td>MEMBER</td>
                <td>2</td>
                <td><p>Group member.</p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
        <h3 id="bytebase.v1.GroupService">GroupService</h3>
        <p>GroupService manages user groups for organizing users and permissions.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>GetGroup</td>
                <td><a href="#bytebase.v1.GetGroupRequest">GetGroupRequest</a></td>
                <td><a href="#bytebase.v1.Group">Group</a></td>
                <td><p>Gets a group by name.
Permissions required: bb.groups.get</p></td>
              </tr>
            
              <tr>
                <td>BatchGetGroups</td>
                <td><a href="#bytebase.v1.BatchGetGroupsRequest">BatchGetGroupsRequest</a></td>
                <td><a href="#bytebase.v1.BatchGetGroupsResponse">BatchGetGroupsResponse</a></td>
                <td><p>Gets multiple groups in a single request.
Permissions required: bb.groups.get</p></td>
              </tr>
            
              <tr>
                <td>ListGroups</td>
                <td><a href="#bytebase.v1.ListGroupsRequest">ListGroupsRequest</a></td>
                <td><a href="#bytebase.v1.ListGroupsResponse">ListGroupsResponse</a></td>
                <td><p>Lists all groups in the workspace.
Permissions required: bb.groups.list</p></td>
              </tr>
            
              <tr>
                <td>CreateGroup</td>
                <td><a href="#bytebase.v1.CreateGroupRequest">CreateGroupRequest</a></td>
                <td><a href="#bytebase.v1.Group">Group</a></td>
                <td><p>Creates a new group.
Permissions required: bb.groups.create</p></td>
              </tr>
            
              <tr>
                <td>UpdateGroup</td>
                <td><a href="#bytebase.v1.UpdateGroupRequest">UpdateGroupRequest</a></td>
                <td><a href="#bytebase.v1.Group">Group</a></td>
                <td><p>Updates a group. Group owners or users with bb.groups.update permission can update.
Permissions required: bb.groups.update OR caller is group owner
When allow_missing=true, also requires: bb.groups.create</p></td>
              </tr>
            
              <tr>
                <td>DeleteGroup</td>
                <td><a href="#bytebase.v1.DeleteGroupRequest">DeleteGroupRequest</a></td>
                <td><a href="#google.protobuf.Empty">.google.protobuf.Empty</a></td>
                <td><p>Deletes a group. Group owners or users with bb.groups.delete permission can delete.
Permissions required: bb.groups.delete OR caller is group owner</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>GetGroup</td>
                <td>GET</td>
                <td>/v1/{name=groups/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>BatchGetGroups</td>
                <td>GET</td>
                <td>/v1/groups:batchGet</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>ListGroups</td>
                <td>GET</td>
                <td>/v1/groups</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>CreateGroup</td>
                <td>POST</td>
                <td>/v1/groups</td>
                <td>group</td>
              </tr>
              
            
              
              
              <tr>
                <td>UpdateGroup</td>
                <td>PATCH</td>
                <td>/v1/{group.name=groups/*}</td>
                <td>group</td>
              </tr>
              
            
              
              
              <tr>
                <td>DeleteGroup</td>
                <td>DELETE</td>
                <td>/v1/{name=groups/*}</td>
                <td></td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/idp_service.proto">v1/idp_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.CreateIdentityProviderRequest">CreateIdentityProviderRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>identity_provider</td>
                  <td><a href="#bytebase.v1.IdentityProvider">IdentityProvider</a></td>
                  <td></td>
                  <td><p>The identity provider to create. </p></td>
                </tr>
              
                <tr>
                  <td>identity_provider_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The ID to use for the identity provider, which will become the final component of
the identity provider&#39;s resource name.

This value should be 4-63 characters, and valid characters
are /[a-z][0-9]-/. </p></td>
                </tr>
              
                <tr>
                  <td>validate_only</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, the request will be validated without actually creating the identity provider. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DeleteIdentityProviderRequest">DeleteIdentityProviderRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the identity provider to delete.
Format: idps/{identity_provider} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.FieldMapping">FieldMapping</h3>
        <p>FieldMapping saves the field names from user info API of identity provider.</p><p>As we save all raw json string of user info response data into `principal.idp_user_info`,</p><p>we can extract the relevant data based with `FieldMapping`.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>identifier</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Identifier is the field name of the unique identifier in 3rd-party idp user info. Required. </p></td>
                </tr>
              
                <tr>
                  <td>display_name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>DisplayName is the field name of display name in 3rd-party idp user info. Optional. </p></td>
                </tr>
              
                <tr>
                  <td>phone</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Phone is the field name of primary phone in 3rd-party idp user info. Optional. </p></td>
                </tr>
              
                <tr>
                  <td>groups</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Groups is the field name of groups in 3rd-party idp user info. Optional.
Mainly used for OIDC: https://developer.okta.com/docs/guides/customize-tokens-groups-claim/main/ </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetIdentityProviderRequest">GetIdentityProviderRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the identity provider to retrieve.
Format: idps/{idp} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.IdentityProvider">IdentityProvider</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the identity provider.
Format: idps/{idp} </p></td>
                </tr>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The display title of the identity provider. </p></td>
                </tr>
              
                <tr>
                  <td>domain</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The domain for email matching when using this identity provider. </p></td>
                </tr>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.IdentityProviderType">IdentityProviderType</a></td>
                  <td></td>
                  <td><p>The type of identity provider protocol. </p></td>
                </tr>
              
                <tr>
                  <td>config</td>
                  <td><a href="#bytebase.v1.IdentityProviderConfig">IdentityProviderConfig</a></td>
                  <td></td>
                  <td><p>The configuration details for the identity provider. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.IdentityProviderConfig">IdentityProviderConfig</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>oauth2_config</td>
                  <td><a href="#bytebase.v1.OAuth2IdentityProviderConfig">OAuth2IdentityProviderConfig</a></td>
                  <td></td>
                  <td><p>OAuth2 protocol configuration. </p></td>
                </tr>
              
                <tr>
                  <td>oidc_config</td>
                  <td><a href="#bytebase.v1.OIDCIdentityProviderConfig">OIDCIdentityProviderConfig</a></td>
                  <td></td>
                  <td><p>OIDC protocol configuration. </p></td>
                </tr>
              
                <tr>
                  <td>ldap_config</td>
                  <td><a href="#bytebase.v1.LDAPIdentityProviderConfig">LDAPIdentityProviderConfig</a></td>
                  <td></td>
                  <td><p>LDAP protocol configuration. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.LDAPIdentityProviderConfig">LDAPIdentityProviderConfig</h3>
        <p>LDAPIdentityProviderConfig is the structure for LDAP identity provider config.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>host</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Host is the hostname or IP address of the LDAP server, e.g.,
&#34;ldap.example.com&#34;. </p></td>
                </tr>
              
                <tr>
                  <td>port</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>Port is the port number of the LDAP server, e.g., 389. When not set, the
default port of the corresponding security protocol will be used, i.e. 389
for StartTLS and 636 for LDAPS. </p></td>
                </tr>
              
                <tr>
                  <td>skip_tls_verify</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>SkipTLSVerify controls whether to skip TLS certificate verification. </p></td>
                </tr>
              
                <tr>
                  <td>bind_dn</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>BindDN is the DN of the user to bind as a service account to perform
search requests. </p></td>
                </tr>
              
                <tr>
                  <td>bind_password</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>BindPassword is the password of the user to bind as a service account. </p></td>
                </tr>
              
                <tr>
                  <td>base_dn</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>BaseDN is the base DN to search for users, e.g., &#34;ou=users,dc=example,dc=com&#34;. </p></td>
                </tr>
              
                <tr>
                  <td>user_filter</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>UserFilter is the filter to search for users, e.g., &#34;(uid=%s)&#34;. </p></td>
                </tr>
              
                <tr>
                  <td>security_protocol</td>
                  <td><a href="#bytebase.v1.LDAPIdentityProviderConfig.SecurityProtocol">LDAPIdentityProviderConfig.SecurityProtocol</a></td>
                  <td></td>
                  <td><p>SecurityProtocol is the security protocol to be used for establishing
connections with the LDAP server. </p></td>
                </tr>
              
                <tr>
                  <td>field_mapping</td>
                  <td><a href="#bytebase.v1.FieldMapping">FieldMapping</a></td>
                  <td></td>
                  <td><p>FieldMapping is the mapping of the user attributes returned by the LDAP
server. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListIdentityProvidersRequest">ListIdentityProvidersRequest</h3>
        <p></p>

        

        
      
        <h3 id="bytebase.v1.ListIdentityProvidersResponse">ListIdentityProvidersResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>identity_providers</td>
                  <td><a href="#bytebase.v1.IdentityProvider">IdentityProvider</a></td>
                  <td>repeated</td>
                  <td><p>The identity providers from the specified request. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.OAuth2IdentityProviderConfig">OAuth2IdentityProviderConfig</h3>
        <p>OAuth2IdentityProviderConfig is the structure for OAuth2 identity provider config.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>auth_url</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The authorization endpoint URL for OAuth2 flow. </p></td>
                </tr>
              
                <tr>
                  <td>token_url</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The token endpoint URL for exchanging authorization code. </p></td>
                </tr>
              
                <tr>
                  <td>user_info_url</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The user information endpoint URL. </p></td>
                </tr>
              
                <tr>
                  <td>client_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The OAuth2 client identifier. </p></td>
                </tr>
              
                <tr>
                  <td>client_secret</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The OAuth2 client secret for authentication. </p></td>
                </tr>
              
                <tr>
                  <td>scopes</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The list of OAuth2 scopes to request. </p></td>
                </tr>
              
                <tr>
                  <td>field_mapping</td>
                  <td><a href="#bytebase.v1.FieldMapping">FieldMapping</a></td>
                  <td></td>
                  <td><p>Mapping configuration for user attributes from OAuth2 response. </p></td>
                </tr>
              
                <tr>
                  <td>skip_tls_verify</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether to skip TLS certificate verification. </p></td>
                </tr>
              
                <tr>
                  <td>auth_style</td>
                  <td><a href="#bytebase.v1.OAuth2AuthStyle">OAuth2AuthStyle</a></td>
                  <td></td>
                  <td><p>The authentication style for client credentials. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.OAuth2IdentityProviderTestRequestContext">OAuth2IdentityProviderTestRequestContext</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>code</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Authorize code from website. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.OIDCIdentityProviderConfig">OIDCIdentityProviderConfig</h3>
        <p>OIDCIdentityProviderConfig is the structure for OIDC identity provider config.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>issuer</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The OIDC issuer URL for the identity provider. </p></td>
                </tr>
              
                <tr>
                  <td>client_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The OIDC client identifier. </p></td>
                </tr>
              
                <tr>
                  <td>client_secret</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The OIDC client secret for authentication. </p></td>
                </tr>
              
                <tr>
                  <td>scopes</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The scopes that the OIDC provider supports.
Should be fetched from the well-known configuration file of the OIDC provider. </p></td>
                </tr>
              
                <tr>
                  <td>field_mapping</td>
                  <td><a href="#bytebase.v1.FieldMapping">FieldMapping</a></td>
                  <td></td>
                  <td><p>Mapping configuration for user attributes from OIDC claims. </p></td>
                </tr>
              
                <tr>
                  <td>skip_tls_verify</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether to skip TLS certificate verification. </p></td>
                </tr>
              
                <tr>
                  <td>auth_style</td>
                  <td><a href="#bytebase.v1.OAuth2AuthStyle">OAuth2AuthStyle</a></td>
                  <td></td>
                  <td><p>The authentication style for client credentials. </p></td>
                </tr>
              
                <tr>
                  <td>auth_endpoint</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The authorization endpoint of the OIDC provider.
Should be fetched from the well-known configuration file of the OIDC provider. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.OIDCIdentityProviderTestRequestContext">OIDCIdentityProviderTestRequestContext</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>code</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Authorize code from OIDC provider. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TestIdentityProviderRequest">TestIdentityProviderRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>identity_provider</td>
                  <td><a href="#bytebase.v1.IdentityProvider">IdentityProvider</a></td>
                  <td></td>
                  <td><p>The identity provider to test connection including uncreated. </p></td>
                </tr>
              
                <tr>
                  <td>oauth2_context</td>
                  <td><a href="#bytebase.v1.OAuth2IdentityProviderTestRequestContext">OAuth2IdentityProviderTestRequestContext</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>oidc_context</td>
                  <td><a href="#bytebase.v1.OIDCIdentityProviderTestRequestContext">OIDCIdentityProviderTestRequestContext</a></td>
                  <td></td>
                  <td><p>OIDC authentication context for test connection. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TestIdentityProviderResponse">TestIdentityProviderResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>claims</td>
                  <td><a href="#bytebase.v1.TestIdentityProviderResponse.ClaimsEntry">TestIdentityProviderResponse.ClaimsEntry</a></td>
                  <td>repeated</td>
                  <td><p>The map of claims returned by the identity provider. </p></td>
                </tr>
              
                <tr>
                  <td>user_info</td>
                  <td><a href="#bytebase.v1.TestIdentityProviderResponse.UserInfoEntry">TestIdentityProviderResponse.UserInfoEntry</a></td>
                  <td>repeated</td>
                  <td><p>The matched user info from the claims. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TestIdentityProviderResponse.ClaimsEntry">TestIdentityProviderResponse.ClaimsEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TestIdentityProviderResponse.UserInfoEntry">TestIdentityProviderResponse.UserInfoEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UpdateIdentityProviderRequest">UpdateIdentityProviderRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>identity_provider</td>
                  <td><a href="#bytebase.v1.IdentityProvider">IdentityProvider</a></td>
                  <td></td>
                  <td><p>The identity provider to update.

The identity provider&#39;s `name` field is used to identify the identity provider to update.
Format: idps/{identity_provider} </p></td>
                </tr>
              
                <tr>
                  <td>update_mask</td>
                  <td><a href="#google.protobuf.FieldMask">google.protobuf.FieldMask</a></td>
                  <td></td>
                  <td><p>The list of fields to update. </p></td>
                </tr>
              
                <tr>
                  <td>allow_missing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, and the identity provider is not found, a new identity provider will be created.
In this situation, `update_mask` is ignored. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.IdentityProviderType">IdentityProviderType</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>IDENTITY_PROVIDER_TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified identity provider type.</p></td>
              </tr>
            
              <tr>
                <td>OAUTH2</td>
                <td>1</td>
                <td><p>OAuth 2.0 authentication protocol.</p></td>
              </tr>
            
              <tr>
                <td>OIDC</td>
                <td>2</td>
                <td><p>OpenID Connect authentication protocol.</p></td>
              </tr>
            
              <tr>
                <td>LDAP</td>
                <td>3</td>
                <td><p>LDAP directory service authentication.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.LDAPIdentityProviderConfig.SecurityProtocol">LDAPIdentityProviderConfig.SecurityProtocol</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>SECURITY_PROTOCOL_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>START_TLS</td>
                <td>1</td>
                <td><p>StartTLS is the security protocol that starts with an unencrypted connection and then upgrades to TLS.</p></td>
              </tr>
            
              <tr>
                <td>LDAPS</td>
                <td>2</td>
                <td><p>LDAPS is the security protocol that uses TLS from the beginning.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.OAuth2AuthStyle">OAuth2AuthStyle</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>OAUTH2_AUTH_STYLE_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>IN_PARAMS</td>
                <td>1</td>
                <td><p>IN_PARAMS sends the &#34;client_id&#34; and &#34;client_secret&#34; in the POST body
as application/x-www-form-urlencoded parameters.</p></td>
              </tr>
            
              <tr>
                <td>IN_HEADER</td>
                <td>2</td>
                <td><p>IN_HEADER sends the client_id and client_password using HTTP Basic Authorization.
This is an optional style described in the OAuth2 RFC 6749 section 2.3.1.</p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
        <h3 id="bytebase.v1.IdentityProviderService">IdentityProviderService</h3>
        <p>IdentityProviderService manages external identity providers for SSO authentication.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>GetIdentityProvider</td>
                <td><a href="#bytebase.v1.GetIdentityProviderRequest">GetIdentityProviderRequest</a></td>
                <td><a href="#bytebase.v1.IdentityProvider">IdentityProvider</a></td>
                <td><p>Gets an identity provider by name.
Permissions required: bb.identityProviders.get</p></td>
              </tr>
            
              <tr>
                <td>ListIdentityProviders</td>
                <td><a href="#bytebase.v1.ListIdentityProvidersRequest">ListIdentityProvidersRequest</a></td>
                <td><a href="#bytebase.v1.ListIdentityProvidersResponse">ListIdentityProvidersResponse</a></td>
                <td><p>Lists all configured identity providers (public endpoint for login page).
Permissions required: None</p></td>
              </tr>
            
              <tr>
                <td>CreateIdentityProvider</td>
                <td><a href="#bytebase.v1.CreateIdentityProviderRequest">CreateIdentityProviderRequest</a></td>
                <td><a href="#bytebase.v1.IdentityProvider">IdentityProvider</a></td>
                <td><p>Creates a new identity provider.
Permissions required: bb.identityProviders.create</p></td>
              </tr>
            
              <tr>
                <td>UpdateIdentityProvider</td>
                <td><a href="#bytebase.v1.UpdateIdentityProviderRequest">UpdateIdentityProviderRequest</a></td>
                <td><a href="#bytebase.v1.IdentityProvider">IdentityProvider</a></td>
                <td><p>Updates an identity provider.
Permissions required: bb.identityProviders.update
When allow_missing=true, also requires: bb.identityProviders.create</p></td>
              </tr>
            
              <tr>
                <td>DeleteIdentityProvider</td>
                <td><a href="#bytebase.v1.DeleteIdentityProviderRequest">DeleteIdentityProviderRequest</a></td>
                <td><a href="#google.protobuf.Empty">.google.protobuf.Empty</a></td>
                <td><p>Deletes an identity provider.
Permissions required: bb.identityProviders.delete</p></td>
              </tr>
            
              <tr>
                <td>TestIdentityProvider</td>
                <td><a href="#bytebase.v1.TestIdentityProviderRequest">TestIdentityProviderRequest</a></td>
                <td><a href="#bytebase.v1.TestIdentityProviderResponse">TestIdentityProviderResponse</a></td>
                <td><p>Tests the connection and configuration of an identity provider.
Permissions required: bb.identityProviders.update</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>GetIdentityProvider</td>
                <td>GET</td>
                <td>/v1/{name=idps/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>ListIdentityProviders</td>
                <td>GET</td>
                <td>/v1/idps</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>CreateIdentityProvider</td>
                <td>POST</td>
                <td>/v1/idps</td>
                <td>identity_provider</td>
              </tr>
              
            
              
              
              <tr>
                <td>UpdateIdentityProvider</td>
                <td>PATCH</td>
                <td>/v1/{identity_provider.name=idps/*}</td>
                <td>identity_provider</td>
              </tr>
              
            
              
              
              <tr>
                <td>DeleteIdentityProvider</td>
                <td>DELETE</td>
                <td>/v1/{name=idps/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>TestIdentityProvider</td>
                <td>POST</td>
                <td>/v1/idps/*:test</td>
                <td>*</td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/org_policy_service.proto">v1/org_policy_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.CreatePolicyRequest">CreatePolicyRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent resource where this instance will be created.
Workspace resource name: &#34;&#34;.
Environment resource name: environments/environment-id.
Instance resource name: instances/instance-id.
Database resource name: instances/instance-id/databases/database-name. </p></td>
                </tr>
              
                <tr>
                  <td>policy</td>
                  <td><a href="#bytebase.v1.Policy">Policy</a></td>
                  <td></td>
                  <td><p>The policy to create. </p></td>
                </tr>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.PolicyType">PolicyType</a></td>
                  <td></td>
                  <td><p>The type of policy to create. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DataSourceQueryPolicy">DataSourceQueryPolicy</h3>
        <p>Policy for controlling which data sources can be queried in the SQL editor.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>admin_data_source_restriction</td>
                  <td><a href="#bytebase.v1.DataSourceQueryPolicy.Restriction">DataSourceQueryPolicy.Restriction</a></td>
                  <td></td>
                  <td><p>Restriction for admin data source queries. </p></td>
                </tr>
              
                <tr>
                  <td>disallow_ddl</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Disallow running DDL statements in the SQL editor. </p></td>
                </tr>
              
                <tr>
                  <td>disallow_dml</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Disallow running DML statements in the SQL editor. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DeletePolicyRequest">DeletePolicyRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The policy&#39;s `name` field is used to identify the instance to update.
Format: {resource name}/policies/{policy type}
Workspace resource name: &#34;&#34;.
Environment resource name: environments/environment-id.
Instance resource name: instances/instance-id.
Database resource name: instances/instance-id/databases/database-name. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetPolicyRequest">GetPolicyRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the policy to retrieve.
Format: {resource type}/{resource id}/policies/{policy type} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListPoliciesRequest">ListPoliciesRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent, which owns this collection of policies.
Format: {resource type}/{resource id} </p></td>
                </tr>
              
                <tr>
                  <td>policy_type</td>
                  <td><a href="#bytebase.v1.PolicyType">PolicyType</a></td>
                  <td>optional</td>
                  <td><p>Filter by specific policy type. </p></td>
                </tr>
              
                <tr>
                  <td>show_deleted</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Show deleted policies if specified. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListPoliciesResponse">ListPoliciesResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>policies</td>
                  <td><a href="#bytebase.v1.Policy">Policy</a></td>
                  <td>repeated</td>
                  <td><p>The policies from the specified request. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.MaskingExceptionPolicy">MaskingExceptionPolicy</h3>
        <p>MaskingExceptionPolicy is the allowlist of users who can access sensitive data.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>masking_exceptions</td>
                  <td><a href="#bytebase.v1.MaskingExceptionPolicy.MaskingException">MaskingExceptionPolicy.MaskingException</a></td>
                  <td>repeated</td>
                  <td><p>The list of masking exceptions. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.MaskingExceptionPolicy.MaskingException">MaskingExceptionPolicy.MaskingException</h3>
        <p>An exception allowing specific users to access masked data.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>action</td>
                  <td><a href="#bytebase.v1.MaskingExceptionPolicy.MaskingException.Action">MaskingExceptionPolicy.MaskingException.Action</a></td>
                  <td></td>
                  <td><p>The action that the user can perform on sensitive data. </p></td>
                </tr>
              
                <tr>
                  <td>member</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Member is the principal who bind to this exception policy instance.

- `user:{email}`: An email address that represents a specific Bytebase account. For example, `alice@example.com`.
- `group:{email}`: An email address for group. </p></td>
                </tr>
              
                <tr>
                  <td>condition</td>
                  <td><a href="#google.type.Expr">google.type.Expr</a></td>
                  <td></td>
                  <td><p>The condition that is associated with this exception policy instance.
The syntax and semantics of CEL are documented at https://github.com/google/cel-spec
If the condition is empty, means the user can access all databases without expiration.

Support variables:
resource.instance_id: the instance resource id. Only support &#34;==&#34; operation.
resource.database_name: the database name. Only support &#34;==&#34; operation.
resource.schema_name: the schema name. Only support &#34;==&#34; operation.
resource.table_name: the table name. Only support &#34;==&#34; operation.
resource.column_name: the column name. Only support &#34;==&#34; operation.
request.time: the expiration. Only support &#34;&lt;&#34; operation in `request.time &lt; timestamp(&#34;{ISO datetime string format}&#34;)`
All variables should join with &#34;&amp;&amp;&#34; condition.

For example:
resource.instance_id == &#34;local&#34; &amp;&amp; resource.database_name == &#34;employee&#34; &amp;&amp; request.time &lt; timestamp(&#34;2025-04-30T11:10:39.000Z&#34;)
resource.instance_id == &#34;local&#34; &amp;&amp; resource.database_name == &#34;employee&#34; </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.MaskingRulePolicy">MaskingRulePolicy</h3>
        <p>Policy for configuring data masking rules.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>rules</td>
                  <td><a href="#bytebase.v1.MaskingRulePolicy.MaskingRule">MaskingRulePolicy.MaskingRule</a></td>
                  <td>repeated</td>
                  <td><p>The list of masking rules. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.MaskingRulePolicy.MaskingRule">MaskingRulePolicy.MaskingRule</h3>
        <p>A rule that defines when and how to mask data.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A unique identifier for the rule in UUID format. </p></td>
                </tr>
              
                <tr>
                  <td>condition</td>
                  <td><a href="#google.type.Expr">google.type.Expr</a></td>
                  <td></td>
                  <td><p>The condition for the masking rule.
The syntax and semantics of CEL are documented at https://github.com/google/cel-spec

Support variables:
resource.environment_id: the environment resource id.
resource.project_id: the project resource id.
resource.instance_id: the instance resource id.
resource.database_name: the database name.
resource.table_name: the table name.
resource.column_name: the column name.
resource.classification_level: the classification level.

Each variable support following operations:
==: the value equals the target.
!=: the value not equals the target.
in: the value matches one of the targets.
!(in): the value not matches any of the targets.

For example:
resource.environment_id == &#34;test&#34; &amp;&amp; resource.project_id == &#34;sample-project&#34;
resource.instance_id == &#34;sample-instance&#34; &amp;&amp; resource.database_name == &#34;employee&#34; &amp;&amp; resource.table_name in [&#34;table1&#34;, &#34;table2&#34;]
resource.environment_id != &#34;test&#34; || !(resource.project_id in [&#34;poject1&#34;, &#34;prject2&#34;])
resource.instance_id == &#34;sample-instance&#34; &amp;&amp; (resource.database_name == &#34;db1&#34; || resource.database_name == &#34;db2&#34;) </p></td>
                </tr>
              
                <tr>
                  <td>semantic_type</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The semantic type of data to mask (e.g., &#34;SSN&#34;, &#34;EMAIL&#34;). </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Policy">Policy</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the policy.
Format: {resource name}/policies/{policy type}
Workspace resource name: &#34;&#34;.
Environment resource name: environments/environment-id.
Instance resource name: instances/instance-id.
Database resource name: instances/instance-id/databases/database-name. </p></td>
                </tr>
              
                <tr>
                  <td>inherit_from_parent</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether this policy inherits from its parent resource. </p></td>
                </tr>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.PolicyType">PolicyType</a></td>
                  <td></td>
                  <td><p>The type of policy. </p></td>
                </tr>
              
                <tr>
                  <td>rollout_policy</td>
                  <td><a href="#bytebase.v1.RolloutPolicy">RolloutPolicy</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>masking_rule_policy</td>
                  <td><a href="#bytebase.v1.MaskingRulePolicy">MaskingRulePolicy</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>masking_exception_policy</td>
                  <td><a href="#bytebase.v1.MaskingExceptionPolicy">MaskingExceptionPolicy</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>tag_policy</td>
                  <td><a href="#bytebase.v1.TagPolicy">TagPolicy</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>data_source_query_policy</td>
                  <td><a href="#bytebase.v1.DataSourceQueryPolicy">DataSourceQueryPolicy</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>query_data_policy</td>
                  <td><a href="#bytebase.v1.QueryDataPolicy">QueryDataPolicy</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>enforce</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether the policy is enforced. </p></td>
                </tr>
              
                <tr>
                  <td>resource_type</td>
                  <td><a href="#bytebase.v1.PolicyResourceType">PolicyResourceType</a></td>
                  <td></td>
                  <td><p>The resource type for the policy. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.QueryDataPolicy">QueryDataPolicy</h3>
        <p>QueryDataPolicy is the policy configuration for querying data.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>timeout</td>
                  <td><a href="#google.protobuf.Duration">google.protobuf.Duration</a></td>
                  <td></td>
                  <td><p>The query timeout duration. </p></td>
                </tr>
              
                <tr>
                  <td>disable_export</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Disable data export in the SQL editor. </p></td>
                </tr>
              
                <tr>
                  <td>maximum_result_size</td>
                  <td><a href="#int64">int64</a></td>
                  <td></td>
                  <td><p>The maximum result size limit in bytes.
The default value is 100MB, we will use the default value if the setting not exists, or the limit &lt;= 0. </p></td>
                </tr>
              
                <tr>
                  <td>maximum_result_rows</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of rows to return.
The default value is -1, means no limit. </p></td>
                </tr>
              
                <tr>
                  <td>disable_copy_data</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Disable copying query results. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.RolloutPolicy">RolloutPolicy</h3>
        <p>Rollout policy configuration.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>automatic</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether rollout is automatic without manual approval. </p></td>
                </tr>
              
                <tr>
                  <td>roles</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The roles that can approve rollout execution. </p></td>
                </tr>
              
                <tr>
                  <td>checkers</td>
                  <td><a href="#bytebase.v1.RolloutPolicy.Checkers">RolloutPolicy.Checkers</a></td>
                  <td></td>
                  <td><p>Checkers that must pass before rollout execution.
These checks are performed in UI workflows only. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.RolloutPolicy.Checkers">RolloutPolicy.Checkers</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>required_issue_approval</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether issue approval is required before proceeding with rollout. </p></td>
                </tr>
              
                <tr>
                  <td>required_status_checks</td>
                  <td><a href="#bytebase.v1.RolloutPolicy.Checkers.RequiredStatusChecks">RolloutPolicy.Checkers.RequiredStatusChecks</a></td>
                  <td></td>
                  <td><p>Status checks that must pass before rollout can be executed. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.RolloutPolicy.Checkers.RequiredStatusChecks">RolloutPolicy.Checkers.RequiredStatusChecks</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>plan_check_enforcement</td>
                  <td><a href="#bytebase.v1.RolloutPolicy.Checkers.PlanCheckEnforcement">RolloutPolicy.Checkers.PlanCheckEnforcement</a></td>
                  <td></td>
                  <td><p>Enforcement level for plan check results during rollout validation. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TagPolicy">TagPolicy</h3>
        <p>Policy for tagging resources with metadata.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>tags</td>
                  <td><a href="#bytebase.v1.TagPolicy.TagsEntry">TagPolicy.TagsEntry</a></td>
                  <td>repeated</td>
                  <td><p>tags is the key - value map for resources.
for example, the environment resource can have the sql review config tag, like &#34;bb.tag.review_config&#34;: &#34;reviewConfigs/{review config resource id}&#34; </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TagPolicy.TagsEntry">TagPolicy.TagsEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UpdatePolicyRequest">UpdatePolicyRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>policy</td>
                  <td><a href="#bytebase.v1.Policy">Policy</a></td>
                  <td></td>
                  <td><p>The policy to update.

The policy&#39;s `name` field is used to identify the instance to update.
Format: {resource name}/policies/{policy type}
Workspace resource name: &#34;&#34;.
Environment resource name: environments/environment-id.
Instance resource name: instances/instance-id.
Database resource name: instances/instance-id/databases/database-name. </p></td>
                </tr>
              
                <tr>
                  <td>update_mask</td>
                  <td><a href="#google.protobuf.FieldMask">google.protobuf.FieldMask</a></td>
                  <td></td>
                  <td><p>The list of fields to update. </p></td>
                </tr>
              
                <tr>
                  <td>allow_missing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, and the policy is not found, a new policy will be created.
In this situation, `update_mask` is ignored. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.DataSourceQueryPolicy.Restriction">DataSourceQueryPolicy.Restriction</h3>
        <p>Restriction level for admin data source access.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>RESTRICTION_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified restriction.</p></td>
              </tr>
            
              <tr>
                <td>FALLBACK</td>
                <td>1</td>
                <td><p>Allow querying admin data sources when there is no read-only data source.</p></td>
              </tr>
            
              <tr>
                <td>DISALLOW</td>
                <td>2</td>
                <td><p>Disallow querying admin data sources.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.MaskingExceptionPolicy.MaskingException.Action">MaskingExceptionPolicy.MaskingException.Action</h3>
        <p>The action that the exception permits.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>ACTION_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified action.</p></td>
              </tr>
            
              <tr>
                <td>QUERY</td>
                <td>1</td>
                <td><p>Allow querying sensitive data.</p></td>
              </tr>
            
              <tr>
                <td>EXPORT</td>
                <td>2</td>
                <td><p>Allow exporting sensitive data.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.PolicyResourceType">PolicyResourceType</h3>
        <p>The resource type that a policy can be attached to.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>RESOURCE_TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified resource type.</p></td>
              </tr>
            
              <tr>
                <td>WORKSPACE</td>
                <td>1</td>
                <td><p>Workspace-level policy.</p></td>
              </tr>
            
              <tr>
                <td>ENVIRONMENT</td>
                <td>2</td>
                <td><p>Environment-level policy.</p></td>
              </tr>
            
              <tr>
                <td>PROJECT</td>
                <td>3</td>
                <td><p>Project-level policy.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.PolicyType">PolicyType</h3>
        <p>The type of organizational policy.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>POLICY_TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified policy type.</p></td>
              </tr>
            
              <tr>
                <td>ROLLOUT_POLICY</td>
                <td>11</td>
                <td><p>Rollout deployment policy.</p></td>
              </tr>
            
              <tr>
                <td>MASKING_RULE</td>
                <td>9</td>
                <td><p>Data masking rule policy.</p></td>
              </tr>
            
              <tr>
                <td>MASKING_EXCEPTION</td>
                <td>10</td>
                <td><p>Data masking exception policy.</p></td>
              </tr>
            
              <tr>
                <td>TAG</td>
                <td>13</td>
                <td><p>Resource tag policy.</p></td>
              </tr>
            
              <tr>
                <td>DATA_SOURCE_QUERY</td>
                <td>14</td>
                <td><p>Data source query restrictions policy.</p></td>
              </tr>
            
              <tr>
                <td>DATA_QUERY</td>
                <td>16</td>
                <td><p>Query data access policy.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.RolloutPolicy.Checkers.PlanCheckEnforcement">RolloutPolicy.Checkers.PlanCheckEnforcement</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>PLAN_CHECK_ENFORCEMENT_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Allow rollout regardless of plan check results (no enforcement).</p></td>
              </tr>
            
              <tr>
                <td>ERROR_ONLY</td>
                <td>1</td>
                <td><p>Block rollout only when plan check finds errors.</p></td>
              </tr>
            
              <tr>
                <td>STRICT</td>
                <td>2</td>
                <td><p>Block rollout when plan check finds errors or warnings.</p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
        <h3 id="bytebase.v1.OrgPolicyService">OrgPolicyService</h3>
        <p>OrgPolicyService manages organizational policies at various resource levels.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>GetPolicy</td>
                <td><a href="#bytebase.v1.GetPolicyRequest">GetPolicyRequest</a></td>
                <td><a href="#bytebase.v1.Policy">Policy</a></td>
                <td><p>Retrieves a policy by name.
Permissions required: bb.policies.get</p></td>
              </tr>
            
              <tr>
                <td>ListPolicies</td>
                <td><a href="#bytebase.v1.ListPoliciesRequest">ListPoliciesRequest</a></td>
                <td><a href="#bytebase.v1.ListPoliciesResponse">ListPoliciesResponse</a></td>
                <td><p>Lists policies at a specified resource level.
Permissions required: bb.policies.list</p></td>
              </tr>
            
              <tr>
                <td>CreatePolicy</td>
                <td><a href="#bytebase.v1.CreatePolicyRequest">CreatePolicyRequest</a></td>
                <td><a href="#bytebase.v1.Policy">Policy</a></td>
                <td><p>Creates a new organizational policy.
Permissions required: bb.policies.create</p></td>
              </tr>
            
              <tr>
                <td>UpdatePolicy</td>
                <td><a href="#bytebase.v1.UpdatePolicyRequest">UpdatePolicyRequest</a></td>
                <td><a href="#bytebase.v1.Policy">Policy</a></td>
                <td><p>Updates an existing organizational policy.
Permissions required: bb.policies.update</p></td>
              </tr>
            
              <tr>
                <td>DeletePolicy</td>
                <td><a href="#bytebase.v1.DeletePolicyRequest">DeletePolicyRequest</a></td>
                <td><a href="#google.protobuf.Empty">.google.protobuf.Empty</a></td>
                <td><p>Deletes an organizational policy.
Permissions required: bb.policies.delete</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>GetPolicy</td>
                <td>GET</td>
                <td>/v1/{name=policies/*}</td>
                <td></td>
              </tr>
              
              <tr>
                <td>GetPolicy</td>
                <td>GET</td>
                <td>/v1/{name=projects/*/policies/*}</td>
                <td></td>
              </tr>
              
              <tr>
                <td>GetPolicy</td>
                <td>GET</td>
                <td>/v1/{name=environments/*/policies/*}</td>
                <td></td>
              </tr>
              
              <tr>
                <td>GetPolicy</td>
                <td>GET</td>
                <td>/v1/{name=instances/*/policies/*}</td>
                <td></td>
              </tr>
              
              <tr>
                <td>GetPolicy</td>
                <td>GET</td>
                <td>/v1/{name=instances/*/databases/*/policies/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>ListPolicies</td>
                <td>GET</td>
                <td>/v1/policies</td>
                <td></td>
              </tr>
              
              <tr>
                <td>ListPolicies</td>
                <td>GET</td>
                <td>/v1/{parent=projects/*}/policies</td>
                <td></td>
              </tr>
              
              <tr>
                <td>ListPolicies</td>
                <td>GET</td>
                <td>/v1/{parent=environments/*}/policies</td>
                <td></td>
              </tr>
              
              <tr>
                <td>ListPolicies</td>
                <td>GET</td>
                <td>/v1/{parent=instances/*}/policies</td>
                <td></td>
              </tr>
              
              <tr>
                <td>ListPolicies</td>
                <td>GET</td>
                <td>/v1/{parent=instances/*/databases/*}/policies</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>CreatePolicy</td>
                <td>POST</td>
                <td>/v1/policies</td>
                <td>policy</td>
              </tr>
              
              <tr>
                <td>CreatePolicy</td>
                <td>POST</td>
                <td>/v1/{parent=projects/*}/policies</td>
                <td>policy</td>
              </tr>
              
              <tr>
                <td>CreatePolicy</td>
                <td>POST</td>
                <td>/v1/{parent=environments/*}/policies</td>
                <td>policy</td>
              </tr>
              
              <tr>
                <td>CreatePolicy</td>
                <td>POST</td>
                <td>/v1/{parent=instances/*}/policies</td>
                <td>policy</td>
              </tr>
              
              <tr>
                <td>CreatePolicy</td>
                <td>POST</td>
                <td>/v1/{parent=instances/*/databases/*}/policies</td>
                <td>policy</td>
              </tr>
              
            
              
              
              <tr>
                <td>UpdatePolicy</td>
                <td>PATCH</td>
                <td>/v1/{policy.name=policies/*}</td>
                <td>policy</td>
              </tr>
              
              <tr>
                <td>UpdatePolicy</td>
                <td>PATCH</td>
                <td>/v1/{policy.name=projects/*/policies/*}</td>
                <td>policy</td>
              </tr>
              
              <tr>
                <td>UpdatePolicy</td>
                <td>PATCH</td>
                <td>/v1/{policy.name=environments/*/policies/*}</td>
                <td>policy</td>
              </tr>
              
              <tr>
                <td>UpdatePolicy</td>
                <td>PATCH</td>
                <td>/v1/{policy.name=instances/*/policies/*}</td>
                <td>policy</td>
              </tr>
              
              <tr>
                <td>UpdatePolicy</td>
                <td>PATCH</td>
                <td>/v1/{policy.name=instances/*/databases/*/policies/*}</td>
                <td>policy</td>
              </tr>
              
            
              
              
              <tr>
                <td>DeletePolicy</td>
                <td>DELETE</td>
                <td>/v1/{name=policies/*}</td>
                <td></td>
              </tr>
              
              <tr>
                <td>DeletePolicy</td>
                <td>DELETE</td>
                <td>/v1/{name=projects/*/policies/*}</td>
                <td></td>
              </tr>
              
              <tr>
                <td>DeletePolicy</td>
                <td>DELETE</td>
                <td>/v1/{name=environments/*/policies/*}</td>
                <td></td>
              </tr>
              
              <tr>
                <td>DeletePolicy</td>
                <td>DELETE</td>
                <td>/v1/{name=instances/*/policies/*}</td>
                <td></td>
              </tr>
              
              <tr>
                <td>DeletePolicy</td>
                <td>DELETE</td>
                <td>/v1/{name=instances/*/databases/*/policies/*}</td>
                <td></td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/sql_service.proto">v1/sql_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.AICompletionRequest">AICompletionRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>messages</td>
                  <td><a href="#bytebase.v1.AICompletionRequest.Message">AICompletionRequest.Message</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.AICompletionRequest.Message">AICompletionRequest.Message</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>role</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>content</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.AICompletionResponse">AICompletionResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>candidates</td>
                  <td><a href="#bytebase.v1.AICompletionResponse.Candidate">AICompletionResponse.Candidate</a></td>
                  <td>repeated</td>
                  <td><p>candidates is used for results with multiple choices and candidates. Used
for OpenAI and Gemini. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.AICompletionResponse.Candidate">AICompletionResponse.Candidate</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>content</td>
                  <td><a href="#bytebase.v1.AICompletionResponse.Candidate.Content">AICompletionResponse.Candidate.Content</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.AICompletionResponse.Candidate.Content">AICompletionResponse.Candidate.Content</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parts</td>
                  <td><a href="#bytebase.v1.AICompletionResponse.Candidate.Content.Part">AICompletionResponse.Candidate.Content.Part</a></td>
                  <td>repeated</td>
                  <td><p>parts is used for a result content with multiple parts. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.AICompletionResponse.Candidate.Content.Part">AICompletionResponse.Candidate.Content.Part</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>text</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.AdminExecuteRequest">AdminExecuteRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name is the instance name to execute the query against.
Format: instances/{instance}/databases/{databaseName} </p></td>
                </tr>
              
                <tr>
                  <td>statement</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The SQL statement to execute. </p></td>
                </tr>
              
                <tr>
                  <td>limit</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of rows to return. </p></td>
                </tr>
              
                <tr>
                  <td>schema</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>The default schema to execute the statement. Equals to the current schema
in Oracle and search path in Postgres. </p></td>
                </tr>
              
                <tr>
                  <td>container</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>Container is the container name to execute the query against, used for
CosmosDB only. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.AdminExecuteResponse">AdminExecuteResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>results</td>
                  <td><a href="#bytebase.v1.QueryResult">QueryResult</a></td>
                  <td>repeated</td>
                  <td><p>The query results. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Advice">Advice</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>status</td>
                  <td><a href="#bytebase.v1.Advice.Level">Advice.Level</a></td>
                  <td></td>
                  <td><p>The advice level. </p></td>
                </tr>
              
                <tr>
                  <td>code</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The advice code. </p></td>
                </tr>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The advice title. </p></td>
                </tr>
              
                <tr>
                  <td>content</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The advice content. </p></td>
                </tr>
              
                <tr>
                  <td>start_position</td>
                  <td><a href="#bytebase.v1.Position">Position</a></td>
                  <td></td>
                  <td><p>The start_position is inclusive and the end_position is exclusive.
TODO: use range instead </p></td>
                </tr>
              
                <tr>
                  <td>end_position</td>
                  <td><a href="#bytebase.v1.Position">Position</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>rule_type</td>
                  <td><a href="#bytebase.v1.Advice.RuleType">Advice.RuleType</a></td>
                  <td></td>
                  <td><p>The type of linting rule that generated this advice. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DiffMetadataRequest">DiffMetadataRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>source_metadata</td>
                  <td><a href="#bytebase.v1.DatabaseMetadata">DatabaseMetadata</a></td>
                  <td></td>
                  <td><p>The metadata of the source schema. </p></td>
                </tr>
              
                <tr>
                  <td>target_metadata</td>
                  <td><a href="#bytebase.v1.DatabaseMetadata">DatabaseMetadata</a></td>
                  <td></td>
                  <td><p>The metadata of the target schema. </p></td>
                </tr>
              
                <tr>
                  <td>source_catalog</td>
                  <td><a href="#bytebase.v1.DatabaseCatalog">DatabaseCatalog</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>target_catalog</td>
                  <td><a href="#bytebase.v1.DatabaseCatalog">DatabaseCatalog</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>engine</td>
                  <td><a href="#bytebase.v1.Engine">Engine</a></td>
                  <td></td>
                  <td><p>The database engine of the schema. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DiffMetadataResponse">DiffMetadataResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>diff</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The diff of the metadata. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ExportRequest">ExportRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name is the resource name to execute the export against.
Format: instances/{instance}/databases/{database}
Format: instances/{instance}
Format: projects/{project}/rollouts/{rollout}
Format: projects/{project}/rollouts/{rollout}/stages/{stage} </p></td>
                </tr>
              
                <tr>
                  <td>statement</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The SQL statement to execute. </p></td>
                </tr>
              
                <tr>
                  <td>limit</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of rows to return. </p></td>
                </tr>
              
                <tr>
                  <td>format</td>
                  <td><a href="#bytebase.v1.ExportFormat">ExportFormat</a></td>
                  <td></td>
                  <td><p>The export format. </p></td>
                </tr>
              
                <tr>
                  <td>admin</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>The admin is used for workspace owner and DBA for exporting data from SQL
Editor Admin mode. The exported data is not masked. </p></td>
                </tr>
              
                <tr>
                  <td>password</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The zip password provide by users. </p></td>
                </tr>
              
                <tr>
                  <td>data_source_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The id of data source.
It is used for querying admin data source even if the instance has
read-only data sources. Or it can be used to query a specific read-only
data source. </p></td>
                </tr>
              
                <tr>
                  <td>schema</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>The default schema to search objects. Equals to the current schema in
Oracle and search path in Postgres. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ExportResponse">ExportResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>content</td>
                  <td><a href="#bytes">bytes</a></td>
                  <td></td>
                  <td><p>The export file content. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.MaskingReason">MaskingReason</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>semantic_type_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The semantic type that triggered masking (e.g., &#34;SSN&#34;, &#34;email&#34;, &#34;phone&#34;). </p></td>
                </tr>
              
                <tr>
                  <td>semantic_type_title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Human-readable semantic type title. </p></td>
                </tr>
              
                <tr>
                  <td>masking_rule_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The masking rule ID that matched (if applicable). </p></td>
                </tr>
              
                <tr>
                  <td>algorithm</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The masking algorithm used. </p></td>
                </tr>
              
                <tr>
                  <td>context</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Additional context (e.g., &#34;Matched global rule: PII Protection&#34;). </p></td>
                </tr>
              
                <tr>
                  <td>classification_level</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Whether masking was due to classification level. </p></td>
                </tr>
              
                <tr>
                  <td>semantic_type_icon</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Icon associated with the semantic type (if any). </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.QueryHistory">QueryHistory</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name for the query history.
Format: queryHistories/{uid} </p></td>
                </tr>
              
                <tr>
                  <td>database</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The database name to execute the query.
Format: instances/{instance}/databases/{databaseName} </p></td>
                </tr>
              
                <tr>
                  <td>creator</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>create_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>statement</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>error</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>duration</td>
                  <td><a href="#google.protobuf.Duration">google.protobuf.Duration</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.QueryHistory.Type">QueryHistory.Type</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.QueryOption">QueryOption</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>redis_run_commands_on</td>
                  <td><a href="#bytebase.v1.QueryOption.RedisRunCommandsOn">QueryOption.RedisRunCommandsOn</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>mssql_explain_format</td>
                  <td><a href="#bytebase.v1.QueryOption.MSSQLExplainFormat">QueryOption.MSSQLExplainFormat</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.QueryRequest">QueryRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name is the instance name to execute the query against.
Format: instances/{instance}/databases/{databaseName} </p></td>
                </tr>
              
                <tr>
                  <td>statement</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The SQL statement to execute. </p></td>
                </tr>
              
                <tr>
                  <td>limit</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of rows to return. </p></td>
                </tr>
              
                <tr>
                  <td>data_source_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The id of data source.
It is used for querying admin data source even if the instance has
read-only data sources. Or it can be used to query a specific read-only
data source. </p></td>
                </tr>
              
                <tr>
                  <td>explain</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Explain the statement. </p></td>
                </tr>
              
                <tr>
                  <td>schema</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>The default schema to search objects. Equals to the current schema in
Oracle and search path in Postgres. </p></td>
                </tr>
              
                <tr>
                  <td>query_option</td>
                  <td><a href="#bytebase.v1.QueryOption">QueryOption</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>container</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>Container is the container name to execute the query against, used for
CosmosDB only. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.QueryResponse">QueryResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>results</td>
                  <td><a href="#bytebase.v1.QueryResult">QueryResult</a></td>
                  <td>repeated</td>
                  <td><p>The query results. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.QueryResult">QueryResult</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>column_names</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>Column names of the query result. </p></td>
                </tr>
              
                <tr>
                  <td>column_type_names</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>Column types of the query result.
The types come from the Golang SQL driver. </p></td>
                </tr>
              
                <tr>
                  <td>rows</td>
                  <td><a href="#bytebase.v1.QueryRow">QueryRow</a></td>
                  <td>repeated</td>
                  <td><p>Rows of the query result. </p></td>
                </tr>
              
                <tr>
                  <td>rows_count</td>
                  <td><a href="#int64">int64</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>error</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The error message if the query failed. </p></td>
                </tr>
              
                <tr>
                  <td>latency</td>
                  <td><a href="#google.protobuf.Duration">google.protobuf.Duration</a></td>
                  <td></td>
                  <td><p>The time it takes to execute the query. </p></td>
                </tr>
              
                <tr>
                  <td>statement</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The query statement for the result. </p></td>
                </tr>
              
                <tr>
                  <td>postgres_error</td>
                  <td><a href="#bytebase.v1.QueryResult.PostgresError">QueryResult.PostgresError</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>syntax_error</td>
                  <td><a href="#bytebase.v1.QueryResult.SyntaxError">QueryResult.SyntaxError</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>permission_denied</td>
                  <td><a href="#bytebase.v1.QueryResult.PermissionDenied">QueryResult.PermissionDenied</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>messages</td>
                  <td><a href="#bytebase.v1.QueryResult.Message">QueryResult.Message</a></td>
                  <td>repeated</td>
                  <td><p>Informational or debug messages returned by the database engine during query execution.
Examples include PostgreSQL&#39;s RAISE NOTICE, MSSQL&#39;s PRINT, or Oracle&#39;s DBMS_OUTPUT.PUT_LINE. </p></td>
                </tr>
              
                <tr>
                  <td>masked</td>
                  <td><a href="#bytebase.v1.MaskingReason">MaskingReason</a></td>
                  <td>repeated</td>
                  <td><p>Masking reasons for each column (empty for non-masked columns). </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.QueryResult.Message">QueryResult.Message</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>level</td>
                  <td><a href="#bytebase.v1.QueryResult.Message.Level">QueryResult.Message.Level</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>content</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.QueryResult.PermissionDenied">QueryResult.PermissionDenied</h3>
        <p>Permission denied with resource information or disallowed command_type.</p><p>Either resources or command_type is available.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>resources</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>Denied to access the resources.
Format:
instances/{instance}/databases/{database}
instances/{instance}/databases/{database}/schemas/{schema}
instances/{instance}/databases/{database}/tables/{table}
instances/{instance}/databases/{database}/schemas/{schema}/tables/{table} </p></td>
                </tr>
              
                <tr>
                  <td>command_type</td>
                  <td><a href="#bytebase.v1.QueryResult.PermissionDenied.CommandType">QueryResult.PermissionDenied.CommandType</a></td>
                  <td></td>
                  <td><p>Disallowed command_type. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.QueryResult.PostgresError">QueryResult.PostgresError</h3>
        <p>refer https://www.postgresql.org/docs/11/protocol-error-fields.html</p><p>for field description.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>severity</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>code</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>message</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>detail</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>hint</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>position</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>internal_position</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>internal_query</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>where</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>schema_name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>table_name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>column_name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>data_type_name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>constraint_name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>file</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>line</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>routine</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.QueryResult.SyntaxError">QueryResult.SyntaxError</h3>
        <p>Syntax error with position information for editor highlighting</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>start_position</td>
                  <td><a href="#bytebase.v1.Position">Position</a></td>
                  <td></td>
                  <td><p>Position information for highlighting in editor </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.QueryRow">QueryRow</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>values</td>
                  <td><a href="#bytebase.v1.RowValue">RowValue</a></td>
                  <td>repeated</td>
                  <td><p>Row values of the query result. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.RowValue">RowValue</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>null_value</td>
                  <td><a href="#google.protobuf.NullValue">google.protobuf.NullValue</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>bool_value</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>bytes_value</td>
                  <td><a href="#bytes">bytes</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>double_value</td>
                  <td><a href="#double">double</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>float_value</td>
                  <td><a href="#float">float</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>int32_value</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>int64_value</td>
                  <td><a href="#int64">int64</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>string_value</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>uint32_value</td>
                  <td><a href="#uint32">uint32</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>uint64_value</td>
                  <td><a href="#uint64">uint64</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value_value</td>
                  <td><a href="#google.protobuf.Value">google.protobuf.Value</a></td>
                  <td></td>
                  <td><p>value_value is used for Spanner and TUPLE ARRAY MAP in Clickhouse only. </p></td>
                </tr>
              
                <tr>
                  <td>timestamp_value</td>
                  <td><a href="#bytebase.v1.RowValue.Timestamp">RowValue.Timestamp</a></td>
                  <td></td>
                  <td><p>timestamp_value is used for the timestamp without time zone data type,
meaning it only includes the timestamp without any time zone or location
info. Although it may be expressed as a UTC value, it should be seen as a
timestamp missing location context. </p></td>
                </tr>
              
                <tr>
                  <td>timestamp_tz_value</td>
                  <td><a href="#bytebase.v1.RowValue.TimestampTZ">RowValue.TimestampTZ</a></td>
                  <td></td>
                  <td><p>timestamp_tz_value is used for the timestamptz data type, which
accurately represents the timestamp with location information. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.RowValue.Timestamp">RowValue.Timestamp</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>google_timestamp</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>accuracy</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The accuracy is the number of digits after the decimal point. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.RowValue.TimestampTZ">RowValue.TimestampTZ</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>google_timestamp</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>zone</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Zone is the time zone abbreviations in timezone database such as &#34;PDT&#34;,
&#34;PST&#34;. https://en.wikipedia.org/wiki/List_of_tz_database_time_zones We
retrieve the time zone information from the timestamptz field in the
database. A timestamp is in UTC or epoch time, and with zone info, we can
convert it to a local time string. Zone and offset are returned by
time.Time.Zone() </p></td>
                </tr>
              
                <tr>
                  <td>offset</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The offset is in seconds east of UTC </p></td>
                </tr>
              
                <tr>
                  <td>accuracy</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SearchQueryHistoriesRequest">SearchQueryHistoriesRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>page_size</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of histories to return.
The service may return fewer than this value.
If unspecified, at most 10 history entries will be returned.
The maximum value is 1000; values above 1000 will be coerced to 1000. </p></td>
                </tr>
              
                <tr>
                  <td>page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A page token, received from a previous `ListQueryHistory` call.
Provide this to retrieve the subsequent page. </p></td>
                </tr>
              
                <tr>
                  <td>filter</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Filter is the filter to apply on the search query history
The syntax and semantics of CEL are documented at https://github.com/google/cel-spec

Supported filter:
- project: the project full name in &#34;projects/{id}&#34; format, support &#34;==&#34; operator.
- database: the database full name in &#34;instances/{id}/databases/{name}&#34; format, support &#34;==&#34; operator.
- instance: the instance full name in &#34;instances/{id}&#34; format, support &#34;==&#34; operator.
- type: the type, should be &#34;QUERY&#34; or &#34;EXPORT&#34;, support &#34;==&#34; operator.
- statement: the SQL statement, support &#34;.matches()&#34; operator.

For example:
project == &#34;projects/{project}&#34;
database == &#34;instances/{instance}/databases/{database}&#34;
instance == &#34;instances/{instance}&#34;
type == &#34;QUERY&#34;
type == &#34;EXPORT&#34;
statement.matches(&#34;select&#34;)
type == &#34;QUERY&#34; &amp;&amp; statement.matches(&#34;select&#34;) </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SearchQueryHistoriesResponse">SearchQueryHistoriesResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>query_histories</td>
                  <td><a href="#bytebase.v1.QueryHistory">QueryHistory</a></td>
                  <td>repeated</td>
                  <td><p>The list of history. </p></td>
                </tr>
              
                <tr>
                  <td>next_page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A token to retrieve next page of history.
Pass this value in the page_token field in the subsequent call to
`ListQueryHistory` method to retrieve the next page of history. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.Advice.Level">Advice.Level</h3>
        <p>Level represents the severity level of the advice.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>ADVICE_LEVEL_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified advice level.</p></td>
              </tr>
            
              <tr>
                <td>SUCCESS</td>
                <td>1</td>
                <td><p>Success status indicating the check passed without issues.</p></td>
              </tr>
            
              <tr>
                <td>WARNING</td>
                <td>2</td>
                <td><p>Warning status indicating potential issues that should be reviewed.</p></td>
              </tr>
            
              <tr>
                <td>ERROR</td>
                <td>3</td>
                <td><p>Error status indicating critical issues that must be addressed.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.Advice.RuleType">Advice.RuleType</h3>
        <p>RuleType indicates the source of the linting rule.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>RULE_TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified rule type.</p></td>
              </tr>
            
              <tr>
                <td>PARSER_BASED</td>
                <td>1</td>
                <td><p>Parser-based rule enforced by the built-in SQL parser.
These are non-configurable, mandatory checks for schema health.</p></td>
              </tr>
            
              <tr>
                <td>AI_POWERED</td>
                <td>2</td>
                <td><p>AI-powered rule defined by user in natural language.
These are custom, flexible checks powered by AI models.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.QueryHistory.Type">QueryHistory.Type</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified query history type.</p></td>
              </tr>
            
              <tr>
                <td>QUERY</td>
                <td>1</td>
                <td><p>Query execution for data retrieval.</p></td>
              </tr>
            
              <tr>
                <td>EXPORT</td>
                <td>2</td>
                <td><p>Data export operation to file.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.QueryOption.MSSQLExplainFormat">QueryOption.MSSQLExplainFormat</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>MSSQL_EXPLAIN_FORMAT_UNSPECIFIED</td>
                <td>0</td>
                <td><p>defaults to SHOWPLAN_ALL</p></td>
              </tr>
            
              <tr>
                <td>MSSQL_EXPLAIN_FORMAT_ALL</td>
                <td>1</td>
                <td><p>SHOWPLAN_ALL</p></td>
              </tr>
            
              <tr>
                <td>MSSQL_EXPLAIN_FORMAT_XML</td>
                <td>2</td>
                <td><p>SHOWPLAN_XML</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.QueryOption.RedisRunCommandsOn">QueryOption.RedisRunCommandsOn</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>REDIS_RUN_COMMANDS_ON_UNSPECIFIED</td>
                <td>0</td>
                <td><p>UNSPECIFIED defaults to SINGLE_NODE.</p></td>
              </tr>
            
              <tr>
                <td>SINGLE_NODE</td>
                <td>1</td>
                <td><p>Execute Redis commands on a single node in the cluster.</p></td>
              </tr>
            
              <tr>
                <td>ALL_NODES</td>
                <td>2</td>
                <td><p>Execute Redis commands on all nodes in the cluster for cluster-wide operations.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.QueryResult.Message.Level">QueryResult.Message.Level</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>LEVEL_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified message level.</p></td>
              </tr>
            
              <tr>
                <td>INFO</td>
                <td>1</td>
                <td><p>Informational message.</p></td>
              </tr>
            
              <tr>
                <td>WARNING</td>
                <td>2</td>
                <td><p>Warning message indicating potential issues.</p></td>
              </tr>
            
              <tr>
                <td>DEBUG</td>
                <td>3</td>
                <td><p>Debug message for development and troubleshooting.</p></td>
              </tr>
            
              <tr>
                <td>LOG</td>
                <td>4</td>
                <td><p>General log message.</p></td>
              </tr>
            
              <tr>
                <td>NOTICE</td>
                <td>5</td>
                <td><p>Notice message for important information.</p></td>
              </tr>
            
              <tr>
                <td>EXCEPTION</td>
                <td>6</td>
                <td><p>Exception message indicating error conditions.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.QueryResult.PermissionDenied.CommandType">QueryResult.PermissionDenied.CommandType</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>COMMAND_TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>DDL</td>
                <td>1</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>DML</td>
                <td>2</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>NON_READ_ONLY</td>
                <td>3</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
        <h3 id="bytebase.v1.SQLService">SQLService</h3>
        <p>SQLService executes SQL queries and manages query operations.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>Query</td>
                <td><a href="#bytebase.v1.QueryRequest">QueryRequest</a></td>
                <td><a href="#bytebase.v1.QueryResponse">QueryResponse</a></td>
                <td><p>Executes a read-only SQL query against a database.
Permissions required: bb.databases.get</p></td>
              </tr>
            
              <tr>
                <td>AdminExecute</td>
                <td><a href="#bytebase.v1.AdminExecuteRequest">AdminExecuteRequest</a> stream</td>
                <td><a href="#bytebase.v1.AdminExecuteResponse">AdminExecuteResponse</a> stream</td>
                <td><p>Executes SQL with admin privileges via streaming connection.
Permissions required: bb.sql.admin</p></td>
              </tr>
            
              <tr>
                <td>SearchQueryHistories</td>
                <td><a href="#bytebase.v1.SearchQueryHistoriesRequest">SearchQueryHistoriesRequest</a></td>
                <td><a href="#bytebase.v1.SearchQueryHistoriesResponse">SearchQueryHistoriesResponse</a></td>
                <td><p>SearchQueryHistories searches query histories for the caller.
Permissions required: None (only returns caller&#39;s own query histories)</p></td>
              </tr>
            
              <tr>
                <td>Export</td>
                <td><a href="#bytebase.v1.ExportRequest">ExportRequest</a></td>
                <td><a href="#bytebase.v1.ExportResponse">ExportResponse</a></td>
                <td><p>Exports query results to a file format.
Permissions required: bb.databases.get</p></td>
              </tr>
            
              <tr>
                <td>DiffMetadata</td>
                <td><a href="#bytebase.v1.DiffMetadataRequest">DiffMetadataRequest</a></td>
                <td><a href="#bytebase.v1.DiffMetadataResponse">DiffMetadataResponse</a></td>
                <td><p>Computes schema differences between two database metadata.
Permissions required: None</p></td>
              </tr>
            
              <tr>
                <td>AICompletion</td>
                <td><a href="#bytebase.v1.AICompletionRequest">AICompletionRequest</a></td>
                <td><a href="#bytebase.v1.AICompletionResponse">AICompletionResponse</a></td>
                <td><p>Provides AI-powered SQL completion and generation.
Permissions required: None (authenticated users only, requires AI to be enabled)</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>Query</td>
                <td>POST</td>
                <td>/v1/{name=instances/*/databases/*}:query</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>AdminExecute</td>
                <td>GET</td>
                <td>/v1:adminExecute</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>SearchQueryHistories</td>
                <td>POST</td>
                <td>/v1/queryHistories:search</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>Export</td>
                <td>POST</td>
                <td>/v1/{name=instances/*/databases/*}:export</td>
                <td>*</td>
              </tr>
              
              <tr>
                <td>Export</td>
                <td>POST</td>
                <td>/v1/{name=projects/*/rollouts/*}:export</td>
                <td>*</td>
              </tr>
              
              <tr>
                <td>Export</td>
                <td>POST</td>
                <td>/v1/{name=projects/*/rollouts/*/stages/*}:export</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>DiffMetadata</td>
                <td>POST</td>
                <td>/v1/schemaDesign:diffMetadata</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>AICompletion</td>
                <td>POST</td>
                <td>/v1/sql/aiCompletion</td>
                <td>*</td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/plan_service.proto">v1/plan_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.BatchCancelPlanCheckRunsRequest">BatchCancelPlanCheckRunsRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the parent of the planChecks.
Format: projects/{project}/plans/{plan} </p></td>
                </tr>
              
                <tr>
                  <td>plan_check_runs</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>TODO(d): update this API.
The planCheckRuns to cancel.
Format: projects/{project}/plans/{plan}/planCheckRuns/{planCheckRun} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchCancelPlanCheckRunsResponse">BatchCancelPlanCheckRunsResponse</h3>
        <p></p>

        

        
      
        <h3 id="bytebase.v1.CreatePlanRequest">CreatePlanRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent project where this plan will be created.
Format: projects/{project} </p></td>
                </tr>
              
                <tr>
                  <td>plan</td>
                  <td><a href="#bytebase.v1.Plan">Plan</a></td>
                  <td></td>
                  <td><p>The plan to create. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetPlanRequest">GetPlanRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the plan to retrieve.
Format: projects/{project}/plans/{plan} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListPlanCheckRunsRequest">ListPlanCheckRunsRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent, which owns this collection of plan check runs.
Format: projects/{project}/plans/{plan} </p></td>
                </tr>
              
                <tr>
                  <td>latest_only</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, only the latest plan check run will be returned. </p></td>
                </tr>
              
                <tr>
                  <td>filter</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Filter is used to filter plan check runs returned in the list.
The syntax and semantics of CEL are documented at https://github.com/google/cel-spec

Supported filters:
- status: the plan check run status, support &#34;==&#34; and &#34;in&#34; operator, check the Status enum in the PlanCheckRun message for the values.
- result_status: the plan check run result status, support &#34;==&#34; and &#34;in&#34; operator, check the Result.Status enum in the PlanCheckRun message for the values.

For example:
status in [&#34;DONE&#34;, &#34;FAILED&#34;]
status == &#34;RUNNING&#34;
result_status in [&#34;SUCCESS&#34;, &#34;ERROR&#34;]
result_status == &#34;WARNING&#34; </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListPlanCheckRunsResponse">ListPlanCheckRunsResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>plan_check_runs</td>
                  <td><a href="#bytebase.v1.PlanCheckRun">PlanCheckRun</a></td>
                  <td>repeated</td>
                  <td><p>The plan check runs from the specified request. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListPlansRequest">ListPlansRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent, which owns this collection of plans.
Format: projects/{project}
Use &#34;projects/-&#34; to list all plans from all projects. </p></td>
                </tr>
              
                <tr>
                  <td>page_size</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of plans to return. The service may return fewer than
this value.
If unspecified, at most 10 plans will be returned.
The maximum value is 1000; values above 1000 will be coerced to 1000. </p></td>
                </tr>
              
                <tr>
                  <td>page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A page token, received from a previous `ListPlans` call.
Provide this to retrieve the subsequent page.

When paginating, all other parameters provided to `ListPlans` must match
the call that provided the page token. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListPlansResponse">ListPlansResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>plans</td>
                  <td><a href="#bytebase.v1.Plan">Plan</a></td>
                  <td>repeated</td>
                  <td><p>The plans from the specified request. </p></td>
                </tr>
              
                <tr>
                  <td>next_page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A token, which can be sent as `page_token` to retrieve the next page.
If this field is omitted, there are no subsequent pages. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Plan">Plan</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the plan.
`plan` is a system generated ID.
Format: projects/{project}/plans/{plan} </p></td>
                </tr>
              
                <tr>
                  <td>state</td>
                  <td><a href="#bytebase.v1.State">State</a></td>
                  <td></td>
                  <td><p>The state of the plan. </p></td>
                </tr>
              
                <tr>
                  <td>issue</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The issue associated with the plan.
Can be empty.
Format: projects/{project}/issues/{issue} </p></td>
                </tr>
              
                <tr>
                  <td>rollout</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The rollout associated with the plan.
Can be empty.
Format: projects/{project}/rollouts/{rollout} </p></td>
                </tr>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The title of the plan. </p></td>
                </tr>
              
                <tr>
                  <td>description</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The description of the plan. </p></td>
                </tr>
              
                <tr>
                  <td>specs</td>
                  <td><a href="#bytebase.v1.Plan.Spec">Plan.Spec</a></td>
                  <td>repeated</td>
                  <td><p>The deployment specs for the plan. </p></td>
                </tr>
              
                <tr>
                  <td>creator</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: users/hello@world.com </p></td>
                </tr>
              
                <tr>
                  <td>create_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>update_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>plan_check_run_status_count</td>
                  <td><a href="#bytebase.v1.Plan.PlanCheckRunStatusCountEntry">Plan.PlanCheckRunStatusCountEntry</a></td>
                  <td>repeated</td>
                  <td><p>The status count of the latest plan check runs.
Keys are:
- SUCCESS
- WARNING
- ERROR
- RUNNING </p></td>
                </tr>
              
                <tr>
                  <td>deployment</td>
                  <td><a href="#bytebase.v1.Plan.Deployment">Plan.Deployment</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Plan.ChangeDatabaseConfig">Plan.ChangeDatabaseConfig</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>targets</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The list of targets.
Multi-database format: [instances/{instance-id}/databases/{database-name}].
Single database group format: [projects/{project}/databaseGroups/{databaseGroup}]. </p></td>
                </tr>
              
                <tr>
                  <td>sheet</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The resource name of the sheet.
Format: projects/{project}/sheets/{sheet} </p></td>
                </tr>
              
                <tr>
                  <td>release</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The resource name of the release.
Format: projects/{project}/releases/{release} </p></td>
                </tr>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.DatabaseChangeType">DatabaseChangeType</a></td>
                  <td></td>
                  <td><p>Type is the database change type. </p></td>
                </tr>
              
                <tr>
                  <td>ghost_flags</td>
                  <td><a href="#bytebase.v1.Plan.ChangeDatabaseConfig.GhostFlagsEntry">Plan.ChangeDatabaseConfig.GhostFlagsEntry</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>enable_prior_backup</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set, a backup of the modified data will be created automatically before any changes are applied. </p></td>
                </tr>
              
                <tr>
                  <td>enable_ghost</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether to use gh-ost for online schema migration. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Plan.ChangeDatabaseConfig.GhostFlagsEntry">Plan.ChangeDatabaseConfig.GhostFlagsEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Plan.CreateDatabaseConfig">Plan.CreateDatabaseConfig</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>target</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The resource name of the instance on which the database is created.
Format: instances/{instance} </p></td>
                </tr>
              
                <tr>
                  <td>database</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the database to create. </p></td>
                </tr>
              
                <tr>
                  <td>table</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>table is the name of the table, if it is not empty, Bytebase should create a table after creating the database.
For example, in MongoDB, it only creates the database when we first store data in that database. </p></td>
                </tr>
              
                <tr>
                  <td>character_set</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>character_set is the character set of the database. </p></td>
                </tr>
              
                <tr>
                  <td>collation</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>collation is the collation of the database. </p></td>
                </tr>
              
                <tr>
                  <td>cluster</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>cluster is the cluster of the database. This is only applicable to ClickHouse for &#34;ON CLUSTER &lt;&lt;cluster&gt;&gt;&#34;. </p></td>
                </tr>
              
                <tr>
                  <td>owner</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>owner is the owner of the database. This is only applicable to Postgres for &#34;WITH OWNER &lt;&lt;owner&gt;&gt;&#34;. </p></td>
                </tr>
              
                <tr>
                  <td>environment</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The environment resource.
Format: environments/prod where prod is the environment resource ID. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Plan.Deployment">Plan.Deployment</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>environments</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The environments deploy order. </p></td>
                </tr>
              
                <tr>
                  <td>database_group_mappings</td>
                  <td><a href="#bytebase.v1.Plan.Deployment.DatabaseGroupMapping">Plan.Deployment.DatabaseGroupMapping</a></td>
                  <td>repeated</td>
                  <td><p>The database group mapping. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Plan.Deployment.DatabaseGroupMapping">Plan.Deployment.DatabaseGroupMapping</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>database_group</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project}/databaseGroups/{databaseGroup}. </p></td>
                </tr>
              
                <tr>
                  <td>databases</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>Format: instances/{instance-id}/databases/{database-name}. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Plan.ExportDataConfig">Plan.ExportDataConfig</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>targets</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The list of targets.
Multi-database format: [instances/{instance-id}/databases/{database-name}].
Single database group format: [projects/{project}/databaseGroups/{databaseGroup}]. </p></td>
                </tr>
              
                <tr>
                  <td>sheet</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The resource name of the sheet.
Format: projects/{project}/sheets/{sheet} </p></td>
                </tr>
              
                <tr>
                  <td>format</td>
                  <td><a href="#bytebase.v1.ExportFormat">ExportFormat</a></td>
                  <td></td>
                  <td><p>The format of the exported file. </p></td>
                </tr>
              
                <tr>
                  <td>password</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>The zip password provide by users.
Leave it empty if no needs to encrypt the zip file. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Plan.PlanCheckRunStatusCountEntry">Plan.PlanCheckRunStatusCountEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>key</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>value</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Plan.Spec">Plan.Spec</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A UUID4 string that uniquely identifies the Spec. </p></td>
                </tr>
              
                <tr>
                  <td>create_database_config</td>
                  <td><a href="#bytebase.v1.Plan.CreateDatabaseConfig">Plan.CreateDatabaseConfig</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>change_database_config</td>
                  <td><a href="#bytebase.v1.Plan.ChangeDatabaseConfig">Plan.ChangeDatabaseConfig</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>export_data_config</td>
                  <td><a href="#bytebase.v1.Plan.ExportDataConfig">Plan.ExportDataConfig</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.PlanCheckRun">PlanCheckRun</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project}/plans/{plan}/planCheckRuns/{planCheckRun} </p></td>
                </tr>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.PlanCheckRun.Type">PlanCheckRun.Type</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>status</td>
                  <td><a href="#bytebase.v1.PlanCheckRun.Status">PlanCheckRun.Status</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>target</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: instances/{instance}/databases/{database} </p></td>
                </tr>
              
                <tr>
                  <td>sheet</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: project/{project}/sheets/{sheet} </p></td>
                </tr>
              
                <tr>
                  <td>results</td>
                  <td><a href="#bytebase.v1.PlanCheckRun.Result">PlanCheckRun.Result</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>error</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>error is set if the Status is FAILED. </p></td>
                </tr>
              
                <tr>
                  <td>create_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.PlanCheckRun.Result">PlanCheckRun.Result</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>status</td>
                  <td><a href="#bytebase.v1.Advice.Level">Advice.Level</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>content</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>code</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>sql_summary_report</td>
                  <td><a href="#bytebase.v1.PlanCheckRun.Result.SqlSummaryReport">PlanCheckRun.Result.SqlSummaryReport</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>sql_review_report</td>
                  <td><a href="#bytebase.v1.PlanCheckRun.Result.SqlReviewReport">PlanCheckRun.Result.SqlReviewReport</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.PlanCheckRun.Result.SqlReviewReport">PlanCheckRun.Result.SqlReviewReport</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>start_position</td>
                  <td><a href="#bytebase.v1.Position">Position</a></td>
                  <td></td>
                  <td><p>Position of the SQL statement. </p></td>
                </tr>
              
                <tr>
                  <td>end_position</td>
                  <td><a href="#bytebase.v1.Position">Position</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.PlanCheckRun.Result.SqlSummaryReport">PlanCheckRun.Result.SqlSummaryReport</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>statement_types</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>statement_types are the types of statements that are found in the sql. </p></td>
                </tr>
              
                <tr>
                  <td>affected_rows</td>
                  <td><a href="#int64">int64</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>changed_resources</td>
                  <td><a href="#bytebase.v1.ChangedResources">ChangedResources</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.RunPlanChecksRequest">RunPlanChecksRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The plan to run plan checks.
Format: projects/{project}/plans/{plan} </p></td>
                </tr>
              
                <tr>
                  <td>spec_id</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>The UUID of the specific spec to run plan checks for.
This should match the spec.id field in Plan.Spec.
If not set, all specs in the plan will be used. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.RunPlanChecksResponse">RunPlanChecksResponse</h3>
        <p></p>

        

        
      
        <h3 id="bytebase.v1.SearchPlansRequest">SearchPlansRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent, which owns this collection of plans.
Format: projects/{project}
Use &#34;projects/-&#34; to list all plans from all projects. </p></td>
                </tr>
              
                <tr>
                  <td>page_size</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of plans to return. The service may return fewer than
this value.
If unspecified, at most 10 plans will be returned.
The maximum value is 1000; values above 1000 will be coerced to 1000. </p></td>
                </tr>
              
                <tr>
                  <td>page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A page token, received from a previous `SearchPlans` call.
Provide this to retrieve the subsequent page.

When paginating, all other parameters provided to `SearchPlans` must match
the call that provided the page token. </p></td>
                </tr>
              
                <tr>
                  <td>filter</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Filter is used to filter plans returned in the list.
The syntax and semantics of CEL are documented at https://github.com/google/cel-spec

Supported filters:
- creator: the plan creator full name in &#34;users/{email or id}&#34; format, support &#34;==&#34; operator.
- create_time: the plan create time in &#34;2006-01-02T15:04:05Z07:00&#34; format, support &#34;&gt;=&#34; or &#34;&lt;=&#34; operator.
- has_pipeline: the plan has pipeline or not, support &#34;==&#34; operator, the value should be &#34;true&#34; or &#34;false&#34;.
- has_issue: the plan has issue or not, support &#34;==&#34; operator, the value should be &#34;true&#34; or &#34;false&#34;.
- title: the plan title, support &#34;==&#34; operator for exact match and &#34;.matches()&#34; operator for case-insensitive substring match.
- spec_type: the plan spec config type, support &#34;==&#34; operator, the value should be &#34;create_database_config&#34;, &#34;change_database_config&#34;, or &#34;export_data_config&#34;.
- state: the plan state, support &#34;==&#34; operator, the value should be &#34;ACTIVE&#34; or &#34;DELETED&#34;.

For example:
creator == &#34;users/ed@bytebase.com&#34; &amp;&amp; create_time &gt;= &#34;2025-01-02T15:04:05Z07:00&#34;
has_pipeline == false &amp;&amp; has_issue == true
title == &#34;My Plan&#34;
title.matches(&#34;database migration&#34;)
spec_type == &#34;change_database_config&#34;
state == &#34;ACTIVE&#34; </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SearchPlansResponse">SearchPlansResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>plans</td>
                  <td><a href="#bytebase.v1.Plan">Plan</a></td>
                  <td>repeated</td>
                  <td><p>The plans from the specified request. </p></td>
                </tr>
              
                <tr>
                  <td>next_page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A token, which can be sent as `page_token` to retrieve the next page.
If this field is omitted, there are no subsequent pages. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UpdatePlanRequest">UpdatePlanRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>plan</td>
                  <td><a href="#bytebase.v1.Plan">Plan</a></td>
                  <td></td>
                  <td><p>The plan to update.

The plan&#39;s `name` field is used to identify the plan to update.
Format: projects/{project}/plans/{plan} </p></td>
                </tr>
              
                <tr>
                  <td>update_mask</td>
                  <td><a href="#google.protobuf.FieldMask">google.protobuf.FieldMask</a></td>
                  <td></td>
                  <td><p>The list of fields to update. </p></td>
                </tr>
              
                <tr>
                  <td>allow_missing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, and the plan is not found, a new plan will be created.
In this situation, `update_mask` is ignored. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.PlanCheckRun.Status">PlanCheckRun.Status</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>STATUS_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>RUNNING</td>
                <td>1</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>DONE</td>
                <td>2</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FAILED</td>
                <td>3</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>CANCELED</td>
                <td>4</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.PlanCheckRun.Type">PlanCheckRun.Type</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified check type.</p></td>
              </tr>
            
              <tr>
                <td>DATABASE_STATEMENT_FAKE_ADVISE</td>
                <td>1</td>
                <td><p>Fake advise check for testing purposes without executing against database.</p></td>
              </tr>
            
              <tr>
                <td>DATABASE_STATEMENT_ADVISE</td>
                <td>3</td>
                <td><p>SQL review check that analyzes statements against configured SQL review rules.</p></td>
              </tr>
            
              <tr>
                <td>DATABASE_STATEMENT_SUMMARY_REPORT</td>
                <td>5</td>
                <td><p>Summary report check that generates impact analysis for the statements.</p></td>
              </tr>
            
              <tr>
                <td>DATABASE_CONNECT</td>
                <td>6</td>
                <td><p>Connection check that verifies database connectivity.</p></td>
              </tr>
            
              <tr>
                <td>DATABASE_GHOST_SYNC</td>
                <td>7</td>
                <td><p>Ghost sync check that validates gh-ost online schema change compatibility.</p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
        <h3 id="bytebase.v1.PlanService">PlanService</h3>
        <p>PlanService manages deployment plans for database changes.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>GetPlan</td>
                <td><a href="#bytebase.v1.GetPlanRequest">GetPlanRequest</a></td>
                <td><a href="#bytebase.v1.Plan">Plan</a></td>
                <td><p>Retrieves a deployment plan by name.
Permissions required: bb.plans.get</p></td>
              </tr>
            
              <tr>
                <td>ListPlans</td>
                <td><a href="#bytebase.v1.ListPlansRequest">ListPlansRequest</a></td>
                <td><a href="#bytebase.v1.ListPlansResponse">ListPlansResponse</a></td>
                <td><p>Lists deployment plans in a project.
Permissions required: bb.plans.list</p></td>
              </tr>
            
              <tr>
                <td>SearchPlans</td>
                <td><a href="#bytebase.v1.SearchPlansRequest">SearchPlansRequest</a></td>
                <td><a href="#bytebase.v1.SearchPlansResponse">SearchPlansResponse</a></td>
                <td><p>Search for plans that the caller has the bb.plans.get permission on and also satisfy the specified filter &amp; query.
Permissions required: bb.plans.get</p></td>
              </tr>
            
              <tr>
                <td>CreatePlan</td>
                <td><a href="#bytebase.v1.CreatePlanRequest">CreatePlanRequest</a></td>
                <td><a href="#bytebase.v1.Plan">Plan</a></td>
                <td><p>Creates a new deployment plan.
Permissions required: bb.plans.create</p></td>
              </tr>
            
              <tr>
                <td>UpdatePlan</td>
                <td><a href="#bytebase.v1.UpdatePlanRequest">UpdatePlanRequest</a></td>
                <td><a href="#bytebase.v1.Plan">Plan</a></td>
                <td><p>UpdatePlan updates the plan.
The plan creator and the user with bb.plans.update permission on the project can update the plan.
Permissions required: bb.plans.update (or creator)</p></td>
              </tr>
            
              <tr>
                <td>ListPlanCheckRuns</td>
                <td><a href="#bytebase.v1.ListPlanCheckRunsRequest">ListPlanCheckRunsRequest</a></td>
                <td><a href="#bytebase.v1.ListPlanCheckRunsResponse">ListPlanCheckRunsResponse</a></td>
                <td><p>Lists plan check runs for a deployment plan.
Permissions required: bb.planCheckRuns.list</p></td>
              </tr>
            
              <tr>
                <td>RunPlanChecks</td>
                <td><a href="#bytebase.v1.RunPlanChecksRequest">RunPlanChecksRequest</a></td>
                <td><a href="#bytebase.v1.RunPlanChecksResponse">RunPlanChecksResponse</a></td>
                <td><p>Executes validation checks on a deployment plan.
Permissions required: bb.planCheckRuns.run</p></td>
              </tr>
            
              <tr>
                <td>BatchCancelPlanCheckRuns</td>
                <td><a href="#bytebase.v1.BatchCancelPlanCheckRunsRequest">BatchCancelPlanCheckRunsRequest</a></td>
                <td><a href="#bytebase.v1.BatchCancelPlanCheckRunsResponse">BatchCancelPlanCheckRunsResponse</a></td>
                <td><p>Cancels multiple plan check runs.
Permissions required: bb.planCheckRuns.run</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>GetPlan</td>
                <td>GET</td>
                <td>/v1/{name=projects/*/plans/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>ListPlans</td>
                <td>GET</td>
                <td>/v1/{parent=projects/*}/plans</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>SearchPlans</td>
                <td>POST</td>
                <td>/v1/{parent=projects/*}/plans:search</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>CreatePlan</td>
                <td>POST</td>
                <td>/v1/{parent=projects/*}/plans</td>
                <td>plan</td>
              </tr>
              
            
              
              
              <tr>
                <td>UpdatePlan</td>
                <td>PATCH</td>
                <td>/v1/{plan.name=projects/*/plans/*}</td>
                <td>plan</td>
              </tr>
              
            
              
              
              <tr>
                <td>ListPlanCheckRuns</td>
                <td>GET</td>
                <td>/v1/{parent=projects/*/plans/*}/planCheckRuns</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>RunPlanChecks</td>
                <td>POST</td>
                <td>/v1/{name=projects/*/plans/*}:runPlanChecks</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>BatchCancelPlanCheckRuns</td>
                <td>POST</td>
                <td>/v1/{parent=projects/*/plans/*}/planCheckRuns:batchCancel</td>
                <td>*</td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/release_service.proto">v1/release_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.CheckReleaseRequest">CheckReleaseRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project} </p></td>
                </tr>
              
                <tr>
                  <td>release</td>
                  <td><a href="#bytebase.v1.Release">Release</a></td>
                  <td></td>
                  <td><p>The release to check. </p></td>
                </tr>
              
                <tr>
                  <td>targets</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The targets to dry-run the release.
Can be database or databaseGroup.
Format:
projects/{project}/databaseGroups/{databaseGroup}
instances/{instance}/databases/{database} </p></td>
                </tr>
              
                <tr>
                  <td>custom_rules</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Custom linting rules in natural language for AI-powered validation.
Each rule should be a clear statement describing the desired schema constraint.
Example: &#34;All tables must have a primary key&#34;
Example: &#34;VARCHAR columns should specify a maximum length&#34; </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.CheckReleaseResponse">CheckReleaseResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>results</td>
                  <td><a href="#bytebase.v1.CheckReleaseResponse.CheckResult">CheckReleaseResponse.CheckResult</a></td>
                  <td>repeated</td>
                  <td><p>The check results for each file and target combination. </p></td>
                </tr>
              
                <tr>
                  <td>affected_rows</td>
                  <td><a href="#int64">int64</a></td>
                  <td></td>
                  <td><p>The total affected rows across all checks. </p></td>
                </tr>
              
                <tr>
                  <td>risk_level</td>
                  <td><a href="#bytebase.v1.RiskLevel">RiskLevel</a></td>
                  <td></td>
                  <td><p>The aggregated risk level of the check. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.CheckReleaseResponse.CheckResult">CheckReleaseResponse.CheckResult</h3>
        <p>Check result for a single release file on a target database.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>file</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The file path that is being checked. </p></td>
                </tr>
              
                <tr>
                  <td>target</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The target that the check is performed on.
Should be a database. Format: instances/{instance}/databases/{database} </p></td>
                </tr>
              
                <tr>
                  <td>advices</td>
                  <td><a href="#bytebase.v1.Advice">Advice</a></td>
                  <td>repeated</td>
                  <td><p>The list of advice for the file and the target. </p></td>
                </tr>
              
                <tr>
                  <td>affected_rows</td>
                  <td><a href="#int64">int64</a></td>
                  <td></td>
                  <td><p>The count of affected rows of the statement on the target. </p></td>
                </tr>
              
                <tr>
                  <td>risk_level</td>
                  <td><a href="#bytebase.v1.RiskLevel">RiskLevel</a></td>
                  <td></td>
                  <td><p>The risk level of the statement on the target. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.CreateReleaseRequest">CreateReleaseRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project} </p></td>
                </tr>
              
                <tr>
                  <td>release</td>
                  <td><a href="#bytebase.v1.Release">Release</a></td>
                  <td></td>
                  <td><p>The release to create. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DeleteReleaseRequest">DeleteReleaseRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the release to delete.
Format: projects/{project}/releases/{release} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetReleaseRequest">GetReleaseRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project}/releases/{release} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListReleasesRequest">ListReleasesRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project} </p></td>
                </tr>
              
                <tr>
                  <td>page_size</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of releases to return. The service may return fewer than this value.
If unspecified, at most 10 releases will be returned.
The maximum value is 1000; values above 1000 will be coerced to 1000. </p></td>
                </tr>
              
                <tr>
                  <td>page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A page token, received from a previous `ListReleases` call.
Provide this to retrieve the subsequent page.

When paginating, all other parameters provided to `ListReleases` must match
the call that provided the page token. </p></td>
                </tr>
              
                <tr>
                  <td>show_deleted</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Show deleted releases if specified. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListReleasesResponse">ListReleasesResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>releases</td>
                  <td><a href="#bytebase.v1.Release">Release</a></td>
                  <td>repeated</td>
                  <td><p>The releases from the specified request. </p></td>
                </tr>
              
                <tr>
                  <td>next_page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A token, which can be sent as `page_token` to retrieve the next page.
If this field is omitted, there are no subsequent pages. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Release">Release</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project}/releases/{release} </p></td>
                </tr>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The title of the release. </p></td>
                </tr>
              
                <tr>
                  <td>files</td>
                  <td><a href="#bytebase.v1.Release.File">Release.File</a></td>
                  <td>repeated</td>
                  <td><p>The SQL files included in the release. </p></td>
                </tr>
              
                <tr>
                  <td>vcs_source</td>
                  <td><a href="#bytebase.v1.Release.VCSSource">Release.VCSSource</a></td>
                  <td></td>
                  <td><p>The version control source of the release. </p></td>
                </tr>
              
                <tr>
                  <td>creator</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: users/hello@world.com </p></td>
                </tr>
              
                <tr>
                  <td>create_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>state</td>
                  <td><a href="#bytebase.v1.State">State</a></td>
                  <td></td>
                  <td><p>The lifecycle state of the release. </p></td>
                </tr>
              
                <tr>
                  <td>digest</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The digest of the release.
The user can provide the digest of the release. It can be used later to retrieve the release in GetRelease.
Whether to provide digest and how to generate it is up to the user.
If the digest is not empty, it must be unique in the project. Otherwise, an ALREADY_EXISTS error will be returned. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Release.File">Release.File</h3>
        <p>A SQL file in a release.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The unique identifier for the file. </p></td>
                </tr>
              
                <tr>
                  <td>path</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The path of the file. e.g., `2.2/V0001_create_table.sql`. </p></td>
                </tr>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.Release.File.Type">Release.File.Type</a></td>
                  <td></td>
                  <td><p>The type of the file. </p></td>
                </tr>
              
                <tr>
                  <td>version</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The version identifier for the file. </p></td>
                </tr>
              
                <tr>
                  <td>enable_ghost</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether to use gh-ost for online schema migration. </p></td>
                </tr>
              
                <tr>
                  <td>sheet</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>For inputs, we must either use `sheet` or `statement`.
For outputs, we always use `sheet`. `statement` is the preview of the sheet content.

The sheet that holds the content.
Format: projects/{project}/sheets/{sheet} </p></td>
                </tr>
              
                <tr>
                  <td>statement</td>
                  <td><a href="#bytes">bytes</a></td>
                  <td></td>
                  <td><p>The raw SQL statement content. </p></td>
                </tr>
              
                <tr>
                  <td>sheet_sha256</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The SHA256 hash value of the sheet content or the statement. </p></td>
                </tr>
              
                <tr>
                  <td>statement_size</td>
                  <td><a href="#int64">int64</a></td>
                  <td></td>
                  <td><p>The size of the statement in bytes. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Release.VCSSource">Release.VCSSource</h3>
        <p>Version control system source information.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>vcs_type</td>
                  <td><a href="#bytebase.v1.VCSType">VCSType</a></td>
                  <td></td>
                  <td><p>The type of VCS. </p></td>
                </tr>
              
                <tr>
                  <td>url</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The url link to the e.g., GitHub commit or pull request. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SearchReleasesRequest">SearchReleasesRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project} </p></td>
                </tr>
              
                <tr>
                  <td>page_size</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of releases to return. The service may return fewer than this value.
If unspecified, at most 10 releases will be returned.
The maximum value is 1000; values above 1000 will be coerced to 1000. </p></td>
                </tr>
              
                <tr>
                  <td>page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A page token, received from a previous `ListReleases` call.
Provide this to retrieve the subsequent page.

When paginating, all other parameters provided to `ListReleases` must match
the call that provided the page token. </p></td>
                </tr>
              
                <tr>
                  <td>digest</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>Search by the digest of the release. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SearchReleasesResponse">SearchReleasesResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>releases</td>
                  <td><a href="#bytebase.v1.Release">Release</a></td>
                  <td>repeated</td>
                  <td><p>The releases matching the search criteria. </p></td>
                </tr>
              
                <tr>
                  <td>next_page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A token, which can be sent as `page_token` to retrieve the next page.
If this field is omitted, there are no subsequent pages. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UndeleteReleaseRequest">UndeleteReleaseRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the deleted release.
Format: projects/{project}/releases/{release} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UpdateReleaseRequest">UpdateReleaseRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>release</td>
                  <td><a href="#bytebase.v1.Release">Release</a></td>
                  <td></td>
                  <td><p>The release to update. </p></td>
                </tr>
              
                <tr>
                  <td>update_mask</td>
                  <td><a href="#google.protobuf.FieldMask">google.protobuf.FieldMask</a></td>
                  <td></td>
                  <td><p>The list of fields to be updated. </p></td>
                </tr>
              
                <tr>
                  <td>allow_missing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, and the release is not found, a new release will be created.
In this situation, `update_mask` is ignored. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.Release.File.Type">Release.File.Type</h3>
        <p>The type of migration file.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified type.</p></td>
              </tr>
            
              <tr>
                <td>VERSIONED</td>
                <td>1</td>
                <td><p>Versioned migration file with sequential version numbers.</p></td>
              </tr>
            
              <tr>
                <td>DECLARATIVE</td>
                <td>2</td>
                <td><p>Declarative schema definition file describing desired state.</p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
        <h3 id="bytebase.v1.ReleaseService">ReleaseService</h3>
        <p>ReleaseService manages releases for coordinating deployments.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>GetRelease</td>
                <td><a href="#bytebase.v1.GetReleaseRequest">GetReleaseRequest</a></td>
                <td><a href="#bytebase.v1.Release">Release</a></td>
                <td><p>Retrieves a release by name.
Permissions required: bb.releases.get</p></td>
              </tr>
            
              <tr>
                <td>ListReleases</td>
                <td><a href="#bytebase.v1.ListReleasesRequest">ListReleasesRequest</a></td>
                <td><a href="#bytebase.v1.ListReleasesResponse">ListReleasesResponse</a></td>
                <td><p>Lists releases in a project.
Permissions required: bb.releases.list</p></td>
              </tr>
            
              <tr>
                <td>SearchReleases</td>
                <td><a href="#bytebase.v1.SearchReleasesRequest">SearchReleasesRequest</a></td>
                <td><a href="#bytebase.v1.SearchReleasesResponse">SearchReleasesResponse</a></td>
                <td><p>Searches releases by digest or other criteria.
Permissions required: bb.releases.get</p></td>
              </tr>
            
              <tr>
                <td>CreateRelease</td>
                <td><a href="#bytebase.v1.CreateReleaseRequest">CreateReleaseRequest</a></td>
                <td><a href="#bytebase.v1.Release">Release</a></td>
                <td><p>Creates a new release with SQL files.
Permissions required: bb.releases.create</p></td>
              </tr>
            
              <tr>
                <td>UpdateRelease</td>
                <td><a href="#bytebase.v1.UpdateReleaseRequest">UpdateReleaseRequest</a></td>
                <td><a href="#bytebase.v1.Release">Release</a></td>
                <td><p>Updates an existing release.
Permissions required: bb.releases.update
When allow_missing=true, also requires: bb.releases.create</p></td>
              </tr>
            
              <tr>
                <td>DeleteRelease</td>
                <td><a href="#bytebase.v1.DeleteReleaseRequest">DeleteReleaseRequest</a></td>
                <td><a href="#google.protobuf.Empty">.google.protobuf.Empty</a></td>
                <td><p>Deletes a release.
Permissions required: bb.releases.delete</p></td>
              </tr>
            
              <tr>
                <td>UndeleteRelease</td>
                <td><a href="#bytebase.v1.UndeleteReleaseRequest">UndeleteReleaseRequest</a></td>
                <td><a href="#bytebase.v1.Release">Release</a></td>
                <td><p>Restores a deleted release.
Permissions required: bb.releases.undelete</p></td>
              </tr>
            
              <tr>
                <td>CheckRelease</td>
                <td><a href="#bytebase.v1.CheckReleaseRequest">CheckReleaseRequest</a></td>
                <td><a href="#bytebase.v1.CheckReleaseResponse">CheckReleaseResponse</a></td>
                <td><p>Validates a release by dry-running checks on target databases.
Permissions required: bb.releases.check</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>GetRelease</td>
                <td>GET</td>
                <td>/v1/{name=projects/*/releases/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>ListReleases</td>
                <td>GET</td>
                <td>/v1/{parent=projects/*}/releases</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>SearchReleases</td>
                <td>GET</td>
                <td>/v1/{parent=projects/*}/releases:search</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>CreateRelease</td>
                <td>POST</td>
                <td>/v1/{parent=projects/*}/releases</td>
                <td>release</td>
              </tr>
              
            
              
              
              <tr>
                <td>UpdateRelease</td>
                <td>PATCH</td>
                <td>/v1/{release.name=projects/*/releases/*}</td>
                <td>release</td>
              </tr>
              
            
              
              
              <tr>
                <td>DeleteRelease</td>
                <td>DELETE</td>
                <td>/v1/{name=projects/*/releases/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>UndeleteRelease</td>
                <td>POST</td>
                <td>/v1/{name=projects/*/releases/*}:undelete</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>CheckRelease</td>
                <td>POST</td>
                <td>/v1/{parent=projects/*}/releases:check</td>
                <td>*</td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/review_config_service.proto">v1/review_config_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.CreateReviewConfigRequest">CreateReviewConfigRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>review_config</td>
                  <td><a href="#bytebase.v1.ReviewConfig">ReviewConfig</a></td>
                  <td></td>
                  <td><p>The SQL review config to create. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DeleteReviewConfigRequest">DeleteReviewConfigRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the SQL review config to delete.
Format: reviewConfigs/{reviewConfig} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetReviewConfigRequest">GetReviewConfigRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the SQL review config to retrieve.
Format: reviewConfigs/{reviewConfig} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListReviewConfigsRequest">ListReviewConfigsRequest</h3>
        <p></p>

        

        
      
        <h3 id="bytebase.v1.ListReviewConfigsResponse">ListReviewConfigsResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>review_configs</td>
                  <td><a href="#bytebase.v1.ReviewConfig">ReviewConfig</a></td>
                  <td>repeated</td>
                  <td><p>The SQL review configs from the specified request. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ReviewConfig">ReviewConfig</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the SQL review config.
Format: reviewConfigs/{reviewConfig} </p></td>
                </tr>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The title of the review configuration. </p></td>
                </tr>
              
                <tr>
                  <td>enabled</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether the review configuration is enabled. </p></td>
                </tr>
              
                <tr>
                  <td>rules</td>
                  <td><a href="#bytebase.v1.SQLReviewRule">SQLReviewRule</a></td>
                  <td>repeated</td>
                  <td><p>The SQL review rules to enforce. </p></td>
                </tr>
              
                <tr>
                  <td>resources</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>Resources using the config.
Format: {resource}/{resource id}, e.g., environments/test. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SQLReviewRule">SQLReviewRule</h3>
        <p>SQL review rule configuration. Check the SQL_REVIEW_RULES_DOCUMENTATION.md for details.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.SQLReviewRule.Type">SQLReviewRule.Type</a></td>
                  <td></td>
                  <td><p>The type of SQL review rule. </p></td>
                </tr>
              
                <tr>
                  <td>level</td>
                  <td><a href="#bytebase.v1.SQLReviewRule.Level">SQLReviewRule.Level</a></td>
                  <td></td>
                  <td><p>The severity level of the rule. </p></td>
                </tr>
              
                <tr>
                  <td>payload</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The payload is a JSON string that varies by rule type. </p></td>
                </tr>
              
                <tr>
                  <td>engine</td>
                  <td><a href="#bytebase.v1.Engine">Engine</a></td>
                  <td></td>
                  <td><p>The database engine this rule applies to. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UpdateReviewConfigRequest">UpdateReviewConfigRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>review_config</td>
                  <td><a href="#bytebase.v1.ReviewConfig">ReviewConfig</a></td>
                  <td></td>
                  <td><p>The SQL review config to update.

The name field is used to identify the SQL review config to update. </p></td>
                </tr>
              
                <tr>
                  <td>update_mask</td>
                  <td><a href="#google.protobuf.FieldMask">google.protobuf.FieldMask</a></td>
                  <td></td>
                  <td><p>The list of fields to update. </p></td>
                </tr>
              
                <tr>
                  <td>allow_missing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, and the config is not found, a new config will be created.
In this situation, `update_mask` is ignored. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.SQLReviewRule.Level">SQLReviewRule.Level</h3>
        <p>The severity level for SQL review rules.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>LEVEL_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified level.</p></td>
              </tr>
            
              <tr>
                <td>ERROR</td>
                <td>1</td>
                <td><p>Rule violation is an error.</p></td>
              </tr>
            
              <tr>
                <td>WARNING</td>
                <td>2</td>
                <td><p>Rule violation is a warning.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.SQLReviewRule.Type">SQLReviewRule.Type</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>ENGINE_MYSQL_USE_INNODB</td>
                <td>1</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>NAMING_FULLY_QUALIFIED</td>
                <td>2</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>NAMING_TABLE</td>
                <td>3</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>NAMING_COLUMN</td>
                <td>4</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>NAMING_INDEX_PK</td>
                <td>5</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>NAMING_INDEX_UK</td>
                <td>6</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>NAMING_INDEX_FK</td>
                <td>7</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>NAMING_INDEX_IDX</td>
                <td>8</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>NAMING_COLUMN_AUTO_INCREMENT</td>
                <td>9</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>NAMING_TABLE_NO_KEYWORD</td>
                <td>10</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>NAMING_IDENTIFIER_NO_KEYWORD</td>
                <td>11</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>NAMING_IDENTIFIER_CASE</td>
                <td>12</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_SELECT_NO_SELECT_ALL</td>
                <td>13</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_WHERE_REQUIRE_SELECT</td>
                <td>14</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_WHERE_REQUIRE_UPDATE_DELETE</td>
                <td>15</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_WHERE_NO_LEADING_WILDCARD_LIKE</td>
                <td>16</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_DISALLOW_ON_DEL_CASCADE</td>
                <td>17</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_DISALLOW_RM_TBL_CASCADE</td>
                <td>18</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_DISALLOW_COMMIT</td>
                <td>19</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_DISALLOW_LIMIT</td>
                <td>20</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_DISALLOW_ORDER_BY</td>
                <td>21</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_MERGE_ALTER_TABLE</td>
                <td>22</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_INSERT_ROW_LIMIT</td>
                <td>23</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_INSERT_MUST_SPECIFY_COLUMN</td>
                <td>24</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_INSERT_DISALLOW_ORDER_BY_RAND</td>
                <td>25</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_AFFECTED_ROW_LIMIT</td>
                <td>26</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_DML_DRY_RUN</td>
                <td>27</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_DISALLOW_ADD_COLUMN_WITH_DEFAULT</td>
                <td>28</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_ADD_CHECK_NOT_VALID</td>
                <td>29</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_ADD_FOREIGN_KEY_NOT_VALID</td>
                <td>30</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_DISALLOW_ADD_NOT_NULL</td>
                <td>31</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_SELECT_FULL_TABLE_SCAN</td>
                <td>32</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_CREATE_SPECIFY_SCHEMA</td>
                <td>33</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_CHECK_SET_ROLE_VARIABLE</td>
                <td>34</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_DISALLOW_USING_FILESORT</td>
                <td>35</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_DISALLOW_USING_TEMPORARY</td>
                <td>36</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_WHERE_NO_EQUAL_NULL</td>
                <td>37</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_WHERE_DISALLOW_FUNCTIONS_AND_CALCULATIONS</td>
                <td>38</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_QUERY_MINIMUM_PLAN_LEVEL</td>
                <td>39</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_WHERE_MAXIMUM_LOGICAL_OPERATOR_COUNT</td>
                <td>40</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_MAXIMUM_LIMIT_VALUE</td>
                <td>41</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_MAXIMUM_JOIN_TABLE_COUNT</td>
                <td>42</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_MAXIMUM_STATEMENTS_IN_TRANSACTION</td>
                <td>43</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_JOIN_STRICT_COLUMN_ATTRS</td>
                <td>44</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_NON_TRANSACTIONAL</td>
                <td>45</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_ADD_COLUMN_WITHOUT_POSITION</td>
                <td>46</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_DISALLOW_OFFLINE_DDL</td>
                <td>47</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_DISALLOW_CROSS_DB_QUERIES</td>
                <td>48</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_MAX_EXECUTION_TIME</td>
                <td>49</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_REQUIRE_ALGORITHM_OPTION</td>
                <td>50</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_REQUIRE_LOCK_OPTION</td>
                <td>51</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>STATEMENT_OBJECT_OWNER_CHECK</td>
                <td>52</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>TABLE_REQUIRE_PK</td>
                <td>53</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>TABLE_NO_FOREIGN_KEY</td>
                <td>54</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>TABLE_DROP_NAMING_CONVENTION</td>
                <td>55</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>TABLE_COMMENT</td>
                <td>56</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>TABLE_DISALLOW_PARTITION</td>
                <td>57</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>TABLE_DISALLOW_TRIGGER</td>
                <td>58</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>TABLE_NO_DUPLICATE_INDEX</td>
                <td>59</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>TABLE_TEXT_FIELDS_TOTAL_LENGTH</td>
                <td>60</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>TABLE_DISALLOW_SET_CHARSET</td>
                <td>61</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>TABLE_DISALLOW_DDL</td>
                <td>62</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>TABLE_DISALLOW_DML</td>
                <td>63</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>TABLE_LIMIT_SIZE</td>
                <td>64</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>TABLE_REQUIRE_CHARSET</td>
                <td>65</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>TABLE_REQUIRE_COLLATION</td>
                <td>66</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>COLUMN_REQUIRED</td>
                <td>67</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>COLUMN_NO_NULL</td>
                <td>68</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>COLUMN_DISALLOW_CHANGE_TYPE</td>
                <td>69</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>COLUMN_SET_DEFAULT_FOR_NOT_NULL</td>
                <td>70</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>COLUMN_DISALLOW_CHANGE</td>
                <td>71</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>COLUMN_DISALLOW_CHANGING_ORDER</td>
                <td>72</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>COLUMN_DISALLOW_DROP</td>
                <td>73</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>COLUMN_DISALLOW_DROP_IN_INDEX</td>
                <td>74</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>COLUMN_COMMENT</td>
                <td>75</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>COLUMN_AUTO_INCREMENT_MUST_INTEGER</td>
                <td>76</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>COLUMN_TYPE_DISALLOW_LIST</td>
                <td>77</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>COLUMN_DISALLOW_SET_CHARSET</td>
                <td>78</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>COLUMN_MAXIMUM_CHARACTER_LENGTH</td>
                <td>79</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>COLUMN_MAXIMUM_VARCHAR_LENGTH</td>
                <td>80</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>COLUMN_AUTO_INCREMENT_INITIAL_VALUE</td>
                <td>81</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>COLUMN_AUTO_INCREMENT_MUST_UNSIGNED</td>
                <td>82</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>COLUMN_CURRENT_TIME_COUNT_LIMIT</td>
                <td>83</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>COLUMN_REQUIRE_DEFAULT</td>
                <td>84</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>COLUMN_DEFAULT_DISALLOW_VOLATILE</td>
                <td>85</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>COLUMN_ADD_NOT_NULL_REQUIRE_DEFAULT</td>
                <td>86</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>COLUMN_REQUIRE_CHARSET</td>
                <td>87</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>COLUMN_REQUIRE_COLLATION</td>
                <td>88</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>SCHEMA_BACKWARD_COMPATIBILITY</td>
                <td>89</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>DATABASE_DROP_EMPTY_DATABASE</td>
                <td>90</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>INDEX_NO_DUPLICATE_COLUMN</td>
                <td>91</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>INDEX_KEY_NUMBER_LIMIT</td>
                <td>92</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>INDEX_PK_TYPE_LIMIT</td>
                <td>93</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>INDEX_TYPE_NO_BLOB</td>
                <td>94</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>INDEX_TOTAL_NUMBER_LIMIT</td>
                <td>95</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>INDEX_PRIMARY_KEY_TYPE_ALLOWLIST</td>
                <td>96</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>INDEX_CREATE_CONCURRENTLY</td>
                <td>97</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>INDEX_TYPE_ALLOW_LIST</td>
                <td>98</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>INDEX_NOT_REDUNDANT</td>
                <td>99</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>SYSTEM_CHARSET_ALLOWLIST</td>
                <td>100</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>SYSTEM_COLLATION_ALLOWLIST</td>
                <td>101</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>SYSTEM_COMMENT_LENGTH</td>
                <td>102</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>SYSTEM_PROCEDURE_DISALLOW_CREATE</td>
                <td>103</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>SYSTEM_EVENT_DISALLOW_CREATE</td>
                <td>104</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>SYSTEM_VIEW_DISALLOW_CREATE</td>
                <td>105</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>SYSTEM_FUNCTION_DISALLOW_CREATE</td>
                <td>106</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>SYSTEM_FUNCTION_DISALLOWED_LIST</td>
                <td>107</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>ADVICE_ONLINE_MIGRATION</td>
                <td>108</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>BUILTIN_PRIOR_BACKUP_CHECK</td>
                <td>109</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
        <h3 id="bytebase.v1.ReviewConfigService">ReviewConfigService</h3>
        <p>ReviewConfigService manages approval flow configurations.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>CreateReviewConfig</td>
                <td><a href="#bytebase.v1.CreateReviewConfigRequest">CreateReviewConfigRequest</a></td>
                <td><a href="#bytebase.v1.ReviewConfig">ReviewConfig</a></td>
                <td><p>Creates a new SQL review configuration.
Permissions required: bb.reviewConfigs.create</p></td>
              </tr>
            
              <tr>
                <td>ListReviewConfigs</td>
                <td><a href="#bytebase.v1.ListReviewConfigsRequest">ListReviewConfigsRequest</a></td>
                <td><a href="#bytebase.v1.ListReviewConfigsResponse">ListReviewConfigsResponse</a></td>
                <td><p>Lists all SQL review configurations.
Permissions required: bb.reviewConfigs.list</p></td>
              </tr>
            
              <tr>
                <td>GetReviewConfig</td>
                <td><a href="#bytebase.v1.GetReviewConfigRequest">GetReviewConfigRequest</a></td>
                <td><a href="#bytebase.v1.ReviewConfig">ReviewConfig</a></td>
                <td><p>Retrieves a SQL review configuration by name.
Permissions required: bb.reviewConfigs.get</p></td>
              </tr>
            
              <tr>
                <td>UpdateReviewConfig</td>
                <td><a href="#bytebase.v1.UpdateReviewConfigRequest">UpdateReviewConfigRequest</a></td>
                <td><a href="#bytebase.v1.ReviewConfig">ReviewConfig</a></td>
                <td><p>Updates a SQL review configuration.
Permissions required: bb.reviewConfigs.update
When allow_missing=true, also requires: bb.reviewConfigs.create</p></td>
              </tr>
            
              <tr>
                <td>DeleteReviewConfig</td>
                <td><a href="#bytebase.v1.DeleteReviewConfigRequest">DeleteReviewConfigRequest</a></td>
                <td><a href="#google.protobuf.Empty">.google.protobuf.Empty</a></td>
                <td><p>Deletes a SQL review configuration.
Permissions required: bb.reviewConfigs.delete</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>CreateReviewConfig</td>
                <td>POST</td>
                <td>/v1/reviewConfigs</td>
                <td>review_config</td>
              </tr>
              
            
              
              
              <tr>
                <td>ListReviewConfigs</td>
                <td>GET</td>
                <td>/v1/reviewConfigs</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>GetReviewConfig</td>
                <td>GET</td>
                <td>/v1/{name=reviewConfigs/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>UpdateReviewConfig</td>
                <td>PATCH</td>
                <td>/v1/{review_config.name=reviewConfigs/*}</td>
                <td>review_config</td>
              </tr>
              
            
              
              
              <tr>
                <td>DeleteReviewConfig</td>
                <td>DELETE</td>
                <td>/v1/{name=reviewConfigs/*}</td>
                <td></td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/revision_service.proto">v1/revision_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.BatchCreateRevisionsRequest">BatchCreateRevisionsRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent resource shared by all revisions being created.
Format: instances/{instance}/databases/{database} </p></td>
                </tr>
              
                <tr>
                  <td>requests</td>
                  <td><a href="#bytebase.v1.CreateRevisionRequest">CreateRevisionRequest</a></td>
                  <td>repeated</td>
                  <td><p>The request message specifying the revisions to create.
A maximum of 100 revisions can be created in a batch. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchCreateRevisionsResponse">BatchCreateRevisionsResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>revisions</td>
                  <td><a href="#bytebase.v1.Revision">Revision</a></td>
                  <td>repeated</td>
                  <td><p>The created revisions. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.CreateRevisionRequest">CreateRevisionRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: instances/{instance}/databases/{database} </p></td>
                </tr>
              
                <tr>
                  <td>revision</td>
                  <td><a href="#bytebase.v1.Revision">Revision</a></td>
                  <td></td>
                  <td><p>The revision to create. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DeleteRevisionRequest">DeleteRevisionRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the revision to delete.
Format: instances/{instance}/databases/{database}/revisions/{revision} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetRevisionRequest">GetRevisionRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the revision.
Format: instances/{instance}/databases/{database}/revisions/{revision} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListRevisionsRequest">ListRevisionsRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent of the revisions.
Format: instances/{instance}/databases/{database} </p></td>
                </tr>
              
                <tr>
                  <td>page_size</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of revisions to return. The service may return fewer
than this value. If unspecified, at most 10 revisions will be returned. The
maximum value is 1000; values above 1000 will be coerced to 1000. </p></td>
                </tr>
              
                <tr>
                  <td>page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A page token, received from a previous `ListRevisions` call.
Provide this to retrieve the subsequent page.

When paginating, all other parameters provided to `ListRevisions` must
match the call that provided the page token. </p></td>
                </tr>
              
                <tr>
                  <td>show_deleted</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Whether to include deleted revisions in the results. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListRevisionsResponse">ListRevisionsResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>revisions</td>
                  <td><a href="#bytebase.v1.Revision">Revision</a></td>
                  <td>repeated</td>
                  <td><p>The revisions from the specified request. </p></td>
                </tr>
              
                <tr>
                  <td>next_page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A token, which can be sent as `page_token` to retrieve the next page.
If this field is omitted, there are no subsequent pages. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Revision">Revision</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: instances/{instance}/databases/{database}/revisions/{revision} </p></td>
                </tr>
              
                <tr>
                  <td>release</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project}/releases/{release}
Can be empty. </p></td>
                </tr>
              
                <tr>
                  <td>create_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>deleter</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: users/hello@world.com
Can be empty. </p></td>
                </tr>
              
                <tr>
                  <td>delete_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>Can be empty. </p></td>
                </tr>
              
                <tr>
                  <td>file</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project}/releases/{release}/files/{id}
Can be empty. </p></td>
                </tr>
              
                <tr>
                  <td>version</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The schema version string for this revision. </p></td>
                </tr>
              
                <tr>
                  <td>sheet</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The sheet that holds the content.
Format: projects/{project}/sheets/{sheet} </p></td>
                </tr>
              
                <tr>
                  <td>sheet_sha256</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The SHA256 hash value of the sheet. </p></td>
                </tr>
              
                <tr>
                  <td>statement</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The statement is used for preview purpose. </p></td>
                </tr>
              
                <tr>
                  <td>statement_size</td>
                  <td><a href="#int64">int64</a></td>
                  <td></td>
                  <td><p>The size of the statement in bytes. </p></td>
                </tr>
              
                <tr>
                  <td>issue</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The issue associated with the revision.
Can be empty.
Format: projects/{project}/issues/{issue} </p></td>
                </tr>
              
                <tr>
                  <td>task_run</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The task run associated with the revision.
Can be empty.
Format:
projects/{project}/rollouts/{rollout}/stages/{stage}/tasks/{task}/taskRuns/{taskRun} </p></td>
                </tr>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.Revision.Type">Revision.Type</a></td>
                  <td></td>
                  <td><p>The type of the revision. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.Revision.Type">Revision.Type</h3>
        <p>The type of schema revision.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified type.</p></td>
              </tr>
            
              <tr>
                <td>VERSIONED</td>
                <td>1</td>
                <td><p>Versioned schema migration.</p></td>
              </tr>
            
              <tr>
                <td>DECLARATIVE</td>
                <td>2</td>
                <td><p>Declarative schema definition.</p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
        <h3 id="bytebase.v1.RevisionService">RevisionService</h3>
        <p>RevisionService manages schema revision history.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>ListRevisions</td>
                <td><a href="#bytebase.v1.ListRevisionsRequest">ListRevisionsRequest</a></td>
                <td><a href="#bytebase.v1.ListRevisionsResponse">ListRevisionsResponse</a></td>
                <td><p>Lists schema revisions for a database.
Permissions required: bb.revisions.list</p></td>
              </tr>
            
              <tr>
                <td>GetRevision</td>
                <td><a href="#bytebase.v1.GetRevisionRequest">GetRevisionRequest</a></td>
                <td><a href="#bytebase.v1.Revision">Revision</a></td>
                <td><p>Retrieves a schema revision by name.
Permissions required: bb.revisions.get</p></td>
              </tr>
            
              <tr>
                <td>CreateRevision</td>
                <td><a href="#bytebase.v1.CreateRevisionRequest">CreateRevisionRequest</a></td>
                <td><a href="#bytebase.v1.Revision">Revision</a></td>
                <td><p>Creates a new schema revision.
Permissions required: bb.revisions.create</p></td>
              </tr>
            
              <tr>
                <td>BatchCreateRevisions</td>
                <td><a href="#bytebase.v1.BatchCreateRevisionsRequest">BatchCreateRevisionsRequest</a></td>
                <td><a href="#bytebase.v1.BatchCreateRevisionsResponse">BatchCreateRevisionsResponse</a></td>
                <td><p>Creates multiple schema revisions in a single operation.
Permissions required: bb.revisions.create</p></td>
              </tr>
            
              <tr>
                <td>DeleteRevision</td>
                <td><a href="#bytebase.v1.DeleteRevisionRequest">DeleteRevisionRequest</a></td>
                <td><a href="#google.protobuf.Empty">.google.protobuf.Empty</a></td>
                <td><p>Deletes a schema revision.
Permissions required: bb.revisions.delete</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>ListRevisions</td>
                <td>GET</td>
                <td>/v1/{parent=instances/*/databases/*}/revisions</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>GetRevision</td>
                <td>GET</td>
                <td>/v1/{name=instances/*/databases/*/revisions/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>CreateRevision</td>
                <td>POST</td>
                <td>/v1/{parent=instances/*/databases/*}/revisions</td>
                <td>revision</td>
              </tr>
              
            
              
              
              <tr>
                <td>BatchCreateRevisions</td>
                <td>POST</td>
                <td>/v1/{parent=instances/*/databases/*}/revisions:batchCreate</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>DeleteRevision</td>
                <td>DELETE</td>
                <td>/v1/{name=instances/*/databases/*/revisions/*}</td>
                <td></td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/role_service.proto">v1/role_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.CreateRoleRequest">CreateRoleRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>role</td>
                  <td><a href="#bytebase.v1.Role">Role</a></td>
                  <td></td>
                  <td><p>The role to create. </p></td>
                </tr>
              
                <tr>
                  <td>role_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The ID to use for the role, which will become the final component
of the role&#39;s resource name.

This value should be 4-63 characters, and valid characters
are /[a-z][A-Z][0-9]/. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DeleteRoleRequest">DeleteRoleRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the role to delete.
Format: roles/{role} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetRoleRequest">GetRoleRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the role to retrieve.
Format: roles/{role} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListRolesRequest">ListRolesRequest</h3>
        <p></p>

        

        
      
        <h3 id="bytebase.v1.ListRolesResponse">ListRolesResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>roles</td>
                  <td><a href="#bytebase.v1.Role">Role</a></td>
                  <td>repeated</td>
                  <td><p>The roles from the specified request. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Role">Role</h3>
        <p>Role defines a set of permissions that can be assigned to users.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Resource name. Format: roles/{role} </p></td>
                </tr>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Human-readable title. </p></td>
                </tr>
              
                <tr>
                  <td>description</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Optional description of the role. </p></td>
                </tr>
              
                <tr>
                  <td>permissions</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>List of permission identifiers granted by this role. </p></td>
                </tr>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.Role.Type">Role.Type</a></td>
                  <td></td>
                  <td><p>Role type indicating if it&#39;s built-in or custom. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UpdateRoleRequest">UpdateRoleRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>role</td>
                  <td><a href="#bytebase.v1.Role">Role</a></td>
                  <td></td>
                  <td><p>The role to update. </p></td>
                </tr>
              
                <tr>
                  <td>update_mask</td>
                  <td><a href="#google.protobuf.FieldMask">google.protobuf.FieldMask</a></td>
                  <td></td>
                  <td><p>The list of fields to update. </p></td>
                </tr>
              
                <tr>
                  <td>allow_missing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, and the role is not found, a new role will be created.
In this situation, `update_mask` is ignored. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.Role.Type">Role.Type</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>BUILT_IN</td>
                <td>1</td>
                <td><p>System-defined role that cannot be modified.</p></td>
              </tr>
            
              <tr>
                <td>CUSTOM</td>
                <td>2</td>
                <td><p>User-defined role that can be modified.</p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
        <h3 id="bytebase.v1.RoleService">RoleService</h3>
        <p>RoleService manages workspace roles and permissions.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>ListRoles</td>
                <td><a href="#bytebase.v1.ListRolesRequest">ListRolesRequest</a></td>
                <td><a href="#bytebase.v1.ListRolesResponse">ListRolesResponse</a></td>
                <td><p>Lists roles in the workspace.
Permissions required: bb.roles.list</p></td>
              </tr>
            
              <tr>
                <td>GetRole</td>
                <td><a href="#bytebase.v1.GetRoleRequest">GetRoleRequest</a></td>
                <td><a href="#bytebase.v1.Role">Role</a></td>
                <td><p>Retrieves a role by name.
Permissions required: bb.roles.get</p></td>
              </tr>
            
              <tr>
                <td>CreateRole</td>
                <td><a href="#bytebase.v1.CreateRoleRequest">CreateRoleRequest</a></td>
                <td><a href="#bytebase.v1.Role">Role</a></td>
                <td><p>Creates a new custom role.
Permissions required: bb.roles.create</p></td>
              </tr>
            
              <tr>
                <td>UpdateRole</td>
                <td><a href="#bytebase.v1.UpdateRoleRequest">UpdateRoleRequest</a></td>
                <td><a href="#bytebase.v1.Role">Role</a></td>
                <td><p>Updates a role&#39;s properties.
Permissions required: bb.roles.update
When allow_missing=true, also requires: bb.roles.create</p></td>
              </tr>
            
              <tr>
                <td>DeleteRole</td>
                <td><a href="#bytebase.v1.DeleteRoleRequest">DeleteRoleRequest</a></td>
                <td><a href="#google.protobuf.Empty">.google.protobuf.Empty</a></td>
                <td><p>Deletes a custom role.
Permissions required: bb.roles.delete</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>ListRoles</td>
                <td>GET</td>
                <td>/v1/roles</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>GetRole</td>
                <td>GET</td>
                <td>/v1/{name=roles/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>CreateRole</td>
                <td>POST</td>
                <td>/v1/roles</td>
                <td>role</td>
              </tr>
              
            
              
              
              <tr>
                <td>UpdateRole</td>
                <td>PATCH</td>
                <td>/v1/{role.name=roles/*}</td>
                <td>role</td>
              </tr>
              
            
              
              
              <tr>
                <td>DeleteRole</td>
                <td>DELETE</td>
                <td>/v1/{name=roles/*}</td>
                <td></td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/rollout_service.proto">v1/rollout_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.BatchCancelTaskRunsRequest">BatchCancelTaskRunsRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the parent of the taskRuns.
Format: projects/{project}/rollouts/{rollout}/stages/{stage}/tasks/{task}
Use `projects/{project}/rollouts/{rollout}/stages/{stage}/tasks/-` to cancel task runs under the same stage. </p></td>
                </tr>
              
                <tr>
                  <td>task_runs</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The taskRuns to cancel.
Format: projects/{project}/rollouts/{rollout}/stages/{stage}/tasks/{task}/taskRuns/{taskRun} </p></td>
                </tr>
              
                <tr>
                  <td>reason</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The reason for canceling the task runs. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchCancelTaskRunsResponse">BatchCancelTaskRunsResponse</h3>
        <p></p>

        

        
      
        <h3 id="bytebase.v1.BatchRunTasksRequest">BatchRunTasksRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the parent of the tasks.
Format: projects/{project}/rollouts/{rollout}/stages/{stage} </p></td>
                </tr>
              
                <tr>
                  <td>tasks</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The tasks to run.
Format: projects/{project}/rollouts/{rollout}/stages/{stage}/tasks/{task} </p></td>
                </tr>
              
                <tr>
                  <td>reason</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The reason for running the tasks. </p></td>
                </tr>
              
                <tr>
                  <td>run_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td>optional</td>
                  <td><p>The task run should run after run_time. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchRunTasksResponse">BatchRunTasksResponse</h3>
        <p></p>

        

        
      
        <h3 id="bytebase.v1.BatchSkipTasksRequest">BatchSkipTasksRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the parent of the tasks.
Format: projects/{project}/rollouts/{rollout}/stages/{stage} </p></td>
                </tr>
              
                <tr>
                  <td>tasks</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>The tasks to skip.
Format: projects/{project}/rollouts/{rollout}/stages/{stage}/tasks/{task} </p></td>
                </tr>
              
                <tr>
                  <td>reason</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The reason for skipping the tasks. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchSkipTasksResponse">BatchSkipTasksResponse</h3>
        <p></p>

        

        
      
        <h3 id="bytebase.v1.CreateRolloutRequest">CreateRolloutRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent project where this rollout will be created.
Format: projects/{project} </p></td>
                </tr>
              
                <tr>
                  <td>rollout</td>
                  <td><a href="#bytebase.v1.Rollout">Rollout</a></td>
                  <td></td>
                  <td><p>The rollout to create. </p></td>
                </tr>
              
                <tr>
                  <td>target</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>Create the rollout and the stages up to the target stage.
Format: environments/{environment}
If unspecified, all stages are created.
If set to &#34;&#34;, no stages are created. </p></td>
                </tr>
              
                <tr>
                  <td>validate_only</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set, validate the request and preview the rollout, but
do not actually create it. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetRolloutRequest">GetRolloutRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the rollout to retrieve.
Format: projects/{project}/rollouts/{rollout} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetTaskRunLogRequest">GetTaskRunLogRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project}/rollouts/{rollout}/stages/{stage}/tasks/{task}/taskRuns/{taskRun}
TODO(d): check the resource_reference. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetTaskRunRequest">GetTaskRunRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project}/rollouts/{rollout}/stages/{stage}/tasks/{task}/taskRuns/{taskRun} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetTaskRunSessionRequest">GetTaskRunSessionRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project}/rollouts/{rollout}/stages/{stage}/tasks/{task}/taskRuns/{taskRun} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListRolloutsRequest">ListRolloutsRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent, which owns this collection of rollouts.
Format: projects/{project}
Use &#34;projects/-&#34; to list all rollouts from all projects. </p></td>
                </tr>
              
                <tr>
                  <td>page_size</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>The maximum number of rollouts to return. The service may return fewer than
this value.
If unspecified, at most 10 rollouts will be returned.
The maximum value is 1000; values above 1000 will be coerced to 1000. </p></td>
                </tr>
              
                <tr>
                  <td>page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A page token, received from a previous `ListRollouts` call.
Provide this to retrieve the subsequent page.

When paginating, all other parameters provided to `ListRollouts` must match
the call that provided the page token. </p></td>
                </tr>
              
                <tr>
                  <td>filter</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Filter is used to filter rollouts returned in the list.
The syntax and semantics of CEL are documented at https://github.com/google/cel-spec

Supported filters:
- creator: the rollout creator full name in &#34;users/{email or id}&#34; format, support &#34;==&#34; operator.
- update_time: rollout update time in &#34;2006-01-02T15:04:05Z07:00&#34; format, support &#34;&gt;=&#34; or &#34;&lt;=&#34; operator.
- task_type: the task type, support &#34;==&#34; and &#34;in&#34; operators, check the Task.Type enum for the values.

For example:
creator == &#34;users/ed@bytebase.com&#34; &amp;&amp; update_time &gt;= &#34;2025-01-02T15:04:05Z07:00&#34;
task_type == &#34;DATABASE_MIGRATE&#34;
task_type in [&#34;DATABASE_MIGRATE&#34;, &#34;DATABASE_EXPORT&#34;] </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListRolloutsResponse">ListRolloutsResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>rollouts</td>
                  <td><a href="#bytebase.v1.Rollout">Rollout</a></td>
                  <td>repeated</td>
                  <td><p>The rollouts from the specified request. </p></td>
                </tr>
              
                <tr>
                  <td>next_page_token</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A token, which can be sent as `page_token` to retrieve the next page.
If this field is omitted, there are no subsequent pages. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListTaskRunsRequest">ListTaskRunsRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent, which owns this collection of plans.
Format: projects/{project}/rollouts/{rollout}/stages/{stage}/tasks/{task}
Use &#34;projects/{project}/rollouts/{rollout}/stages/-/tasks/-&#34; to list all taskRuns from a rollout. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.ListTaskRunsResponse">ListTaskRunsResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>task_runs</td>
                  <td><a href="#bytebase.v1.TaskRun">TaskRun</a></td>
                  <td>repeated</td>
                  <td><p>The taskRuns from the specified request. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.PreviewRolloutRequest">PreviewRolloutRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>project</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the project.
Format: projects/{project} </p></td>
                </tr>
              
                <tr>
                  <td>plan</td>
                  <td><a href="#bytebase.v1.Plan">Plan</a></td>
                  <td></td>
                  <td><p>The plan used to preview rollout. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.PreviewTaskRunRollbackRequest">PreviewTaskRunRollbackRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project}/rollouts/{rollout}/stages/{stage}/tasks/{task}/taskRuns/{taskRun} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.PreviewTaskRunRollbackResponse">PreviewTaskRunRollbackResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>statement</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The rollback SQL statement that would undo the task run. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Rollout">Rollout</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The resource name of the rollout.
Format: projects/{project}/rollouts/{rollout} </p></td>
                </tr>
              
                <tr>
                  <td>plan</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The plan that this rollout is based on.
Format: projects/{project}/plans/{plan} </p></td>
                </tr>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The title of the rollout, inherited from the associated plan.
This field is output only and cannot be directly set. </p></td>
                </tr>
              
                <tr>
                  <td>stages</td>
                  <td><a href="#bytebase.v1.Stage">Stage</a></td>
                  <td>repeated</td>
                  <td><p>Stages and thus tasks of the rollout. </p></td>
                </tr>
              
                <tr>
                  <td>creator</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: users/hello@world.com </p></td>
                </tr>
              
                <tr>
                  <td>create_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>update_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>issue</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The issue associated with the rollout. Could be empty.
Format: projects/{project}/issues/{issue} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Stage">Stage</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project}/rollouts/{rollout}/stages/{stage}
Use &#34;-&#34; for {stage} when the stage has no environment or deleted environment. </p></td>
                </tr>
              
                <tr>
                  <td>id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>id is the environment id of the stage.
e.g., &#34;prod&#34;.
Use &#34;-&#34; when the stage has no environment or deleted environment. </p></td>
                </tr>
              
                <tr>
                  <td>environment</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>environment is the environment of the stage.
Format: environments/{environment} for valid environments, or &#34;environments/-&#34; for stages without environment or with deleted environments. </p></td>
                </tr>
              
                <tr>
                  <td>tasks</td>
                  <td><a href="#bytebase.v1.Task">Task</a></td>
                  <td>repeated</td>
                  <td><p>The tasks within this stage. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Task">Task</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project}/rollouts/{rollout}/stages/{stage}/tasks/{task} </p></td>
                </tr>
              
                <tr>
                  <td>spec_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>A UUID4 string that uniquely identifies the Spec.
Could be empty if the rollout of the task does not have an associating plan. </p></td>
                </tr>
              
                <tr>
                  <td>status</td>
                  <td><a href="#bytebase.v1.Task.Status">Task.Status</a></td>
                  <td></td>
                  <td><p>Status is the status of the task. </p></td>
                </tr>
              
                <tr>
                  <td>skipped_reason</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The reason why the task was skipped. </p></td>
                </tr>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.Task.Type">Task.Type</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>target</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: instances/{instance} if the task is DatabaseCreate.
Format: instances/{instance}/databases/{database} </p></td>
                </tr>
              
                <tr>
                  <td>database_create</td>
                  <td><a href="#bytebase.v1.Task.DatabaseCreate">Task.DatabaseCreate</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>database_update</td>
                  <td><a href="#bytebase.v1.Task.DatabaseUpdate">Task.DatabaseUpdate</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>database_data_export</td>
                  <td><a href="#bytebase.v1.Task.DatabaseDataExport">Task.DatabaseDataExport</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>update_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td>optional</td>
                  <td><p>The update_time is the update time of latest task run.
If there are no task runs, it will be empty. </p></td>
                </tr>
              
                <tr>
                  <td>run_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td>optional</td>
                  <td><p>The run_time is the scheduled run time of latest task run.
If there are no task runs or the task run is not scheduled, it will be empty. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Task.DatabaseCreate">Task.DatabaseCreate</h3>
        <p>Payload for creating a new database.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>project</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The project owning the database.
Format: projects/{project} </p></td>
                </tr>
              
                <tr>
                  <td>database</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Database name. </p></td>
                </tr>
              
                <tr>
                  <td>table</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Table name. </p></td>
                </tr>
              
                <tr>
                  <td>sheet</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project}/sheets/{sheet} </p></td>
                </tr>
              
                <tr>
                  <td>character_set</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The character set for the database. </p></td>
                </tr>
              
                <tr>
                  <td>collation</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The collation for the database. </p></td>
                </tr>
              
                <tr>
                  <td>environment</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The environment the database belongs to. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Task.DatabaseDataExport">Task.DatabaseDataExport</h3>
        <p>Payload for exporting database data.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>target</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The resource name of the target.
Format: instances/{instance-id}/databases/{database-name} </p></td>
                </tr>
              
                <tr>
                  <td>sheet</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The resource name of the sheet.
Format: projects/{project}/sheets/{sheet} </p></td>
                </tr>
              
                <tr>
                  <td>format</td>
                  <td><a href="#bytebase.v1.ExportFormat">ExportFormat</a></td>
                  <td></td>
                  <td><p>The format of the exported file. </p></td>
                </tr>
              
                <tr>
                  <td>password</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>The zip password provided by users.
Leave it empty if no needs to encrypt the zip file. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Task.DatabaseUpdate">Task.DatabaseUpdate</h3>
        <p>Payload for updating a database schema.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>sheet</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project}/sheets/{sheet} </p></td>
                </tr>
              
                <tr>
                  <td>schema_version</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The target schema version after this update. </p></td>
                </tr>
              
                <tr>
                  <td>database_change_type</td>
                  <td><a href="#bytebase.v1.DatabaseChangeType">DatabaseChangeType</a></td>
                  <td></td>
                  <td><p>The type of database change (MIGRATE or SDL). </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TaskRun">TaskRun</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project}/rollouts/{rollout}/stages/{stage}/tasks/{task}/taskRuns/{taskRun} </p></td>
                </tr>
              
                <tr>
                  <td>creator</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: users/hello@world.com </p></td>
                </tr>
              
                <tr>
                  <td>create_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>update_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>status</td>
                  <td><a href="#bytebase.v1.TaskRun.Status">TaskRun.Status</a></td>
                  <td></td>
                  <td><p>The current execution status of the task run. </p></td>
                </tr>
              
                <tr>
                  <td>detail</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Below are the results of a task run.
Detailed information about the task run result. </p></td>
                </tr>
              
                <tr>
                  <td>changelog</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The resource name of the changelog.
Format: instances/{instance}/databases/{database}/changelogs/{changelog} </p></td>
                </tr>
              
                <tr>
                  <td>schema_version</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The schema version after this task run completes. </p></td>
                </tr>
              
                <tr>
                  <td>start_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>The time when the task run started execution. </p></td>
                </tr>
              
                <tr>
                  <td>export_archive_status</td>
                  <td><a href="#bytebase.v1.TaskRun.ExportArchiveStatus">TaskRun.ExportArchiveStatus</a></td>
                  <td></td>
                  <td><p>The export archive status for data export tasks. </p></td>
                </tr>
              
                <tr>
                  <td>prior_backup_detail</td>
                  <td><a href="#bytebase.v1.TaskRun.PriorBackupDetail">TaskRun.PriorBackupDetail</a></td>
                  <td></td>
                  <td><p>The prior backup detail that will be used to rollback the task run. </p></td>
                </tr>
              
                <tr>
                  <td>scheduler_info</td>
                  <td><a href="#bytebase.v1.TaskRun.SchedulerInfo">TaskRun.SchedulerInfo</a></td>
                  <td></td>
                  <td><p>Scheduling information about the task run. </p></td>
                </tr>
              
                <tr>
                  <td>sheet</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project}/sheets/{sheet} </p></td>
                </tr>
              
                <tr>
                  <td>run_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td>optional</td>
                  <td><p>The task run should run after run_time.
This can only be set when creating the task run calling BatchRunTasks. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TaskRun.PriorBackupDetail">TaskRun.PriorBackupDetail</h3>
        <p>Prior backup detail for rollback purposes.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>items</td>
                  <td><a href="#bytebase.v1.TaskRun.PriorBackupDetail.Item">TaskRun.PriorBackupDetail.Item</a></td>
                  <td>repeated</td>
                  <td><p>The list of backed up tables. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TaskRun.PriorBackupDetail.Item">TaskRun.PriorBackupDetail.Item</h3>
        <p>A single backup table mapping.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>source_table</td>
                  <td><a href="#bytebase.v1.TaskRun.PriorBackupDetail.Item.Table">TaskRun.PriorBackupDetail.Item.Table</a></td>
                  <td></td>
                  <td><p>The original table information. </p></td>
                </tr>
              
                <tr>
                  <td>target_table</td>
                  <td><a href="#bytebase.v1.TaskRun.PriorBackupDetail.Item.Table">TaskRun.PriorBackupDetail.Item.Table</a></td>
                  <td></td>
                  <td><p>The target backup table information. </p></td>
                </tr>
              
                <tr>
                  <td>start_position</td>
                  <td><a href="#bytebase.v1.Position">Position</a></td>
                  <td></td>
                  <td><p>The start position in the SQL statement. </p></td>
                </tr>
              
                <tr>
                  <td>end_position</td>
                  <td><a href="#bytebase.v1.Position">Position</a></td>
                  <td></td>
                  <td><p>The end position in the SQL statement. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TaskRun.PriorBackupDetail.Item.Table">TaskRun.PriorBackupDetail.Item.Table</h3>
        <p>Table information.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>database</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The database information.
Format: instances/{instance}/databases/{database} </p></td>
                </tr>
              
                <tr>
                  <td>schema</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The schema name. </p></td>
                </tr>
              
                <tr>
                  <td>table</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The table name. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TaskRun.SchedulerInfo">TaskRun.SchedulerInfo</h3>
        <p>Information about task run scheduling.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>report_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>The time when the scheduling info was reported. </p></td>
                </tr>
              
                <tr>
                  <td>waiting_cause</td>
                  <td><a href="#bytebase.v1.TaskRun.SchedulerInfo.WaitingCause">TaskRun.SchedulerInfo.WaitingCause</a></td>
                  <td></td>
                  <td><p>The cause for the task run waiting. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TaskRun.SchedulerInfo.WaitingCause">TaskRun.SchedulerInfo.WaitingCause</h3>
        <p>Information about why a task run is waiting.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>connection_limit</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Waiting due to connection limit reached. </p></td>
                </tr>
              
                <tr>
                  <td>task</td>
                  <td><a href="#bytebase.v1.TaskRun.SchedulerInfo.WaitingCause.Task">TaskRun.SchedulerInfo.WaitingCause.Task</a></td>
                  <td></td>
                  <td><p>Waiting for another task to complete. </p></td>
                </tr>
              
                <tr>
                  <td>parallel_tasks_limit</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>Waiting due to parallel tasks limit. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TaskRun.SchedulerInfo.WaitingCause.Task">TaskRun.SchedulerInfo.WaitingCause.Task</h3>
        <p>Information about a blocking task.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>task</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project}/rollouts/{rollout}/stages/{stage}/tasks/{task} </p></td>
                </tr>
              
                <tr>
                  <td>issue</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project}/issues/{issue} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TaskRunLog">TaskRunLog</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project}/rollouts/{rollout}/stages/{stage}/tasks/{task}/taskRuns/{taskRun}/log </p></td>
                </tr>
              
                <tr>
                  <td>entries</td>
                  <td><a href="#bytebase.v1.TaskRunLogEntry">TaskRunLogEntry</a></td>
                  <td>repeated</td>
                  <td><p>The log entries for this task run. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TaskRunLogEntry">TaskRunLogEntry</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.TaskRunLogEntry.Type">TaskRunLogEntry.Type</a></td>
                  <td></td>
                  <td><p>The type of this log entry. </p></td>
                </tr>
              
                <tr>
                  <td>log_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>The time when the log was recorded. </p></td>
                </tr>
              
                <tr>
                  <td>deploy_id</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The deployment ID for this log entry. </p></td>
                </tr>
              
                <tr>
                  <td>schema_dump</td>
                  <td><a href="#bytebase.v1.TaskRunLogEntry.SchemaDump">TaskRunLogEntry.SchemaDump</a></td>
                  <td></td>
                  <td><p>Schema dump details (if type is SCHEMA_DUMP). </p></td>
                </tr>
              
                <tr>
                  <td>command_execute</td>
                  <td><a href="#bytebase.v1.TaskRunLogEntry.CommandExecute">TaskRunLogEntry.CommandExecute</a></td>
                  <td></td>
                  <td><p>Command execution details (if type is COMMAND_EXECUTE). </p></td>
                </tr>
              
                <tr>
                  <td>database_sync</td>
                  <td><a href="#bytebase.v1.TaskRunLogEntry.DatabaseSync">TaskRunLogEntry.DatabaseSync</a></td>
                  <td></td>
                  <td><p>Database sync details (if type is DATABASE_SYNC). </p></td>
                </tr>
              
                <tr>
                  <td>task_run_status_update</td>
                  <td><a href="#bytebase.v1.TaskRunLogEntry.TaskRunStatusUpdate">TaskRunLogEntry.TaskRunStatusUpdate</a></td>
                  <td></td>
                  <td><p>Task run status update details (if type is TASK_RUN_STATUS_UPDATE). </p></td>
                </tr>
              
                <tr>
                  <td>transaction_control</td>
                  <td><a href="#bytebase.v1.TaskRunLogEntry.TransactionControl">TaskRunLogEntry.TransactionControl</a></td>
                  <td></td>
                  <td><p>Transaction control details (if type is TRANSACTION_CONTROL). </p></td>
                </tr>
              
                <tr>
                  <td>prior_backup</td>
                  <td><a href="#bytebase.v1.TaskRunLogEntry.PriorBackup">TaskRunLogEntry.PriorBackup</a></td>
                  <td></td>
                  <td><p>Prior backup details (if type is PRIOR_BACKUP). </p></td>
                </tr>
              
                <tr>
                  <td>retry_info</td>
                  <td><a href="#bytebase.v1.TaskRunLogEntry.RetryInfo">TaskRunLogEntry.RetryInfo</a></td>
                  <td></td>
                  <td><p>Retry information details (if type is RETRY_INFO). </p></td>
                </tr>
              
                <tr>
                  <td>compute_diff</td>
                  <td><a href="#bytebase.v1.TaskRunLogEntry.ComputeDiff">TaskRunLogEntry.ComputeDiff</a></td>
                  <td></td>
                  <td><p>Compute diff details (if type is COMPUTE_DIFF). </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TaskRunLogEntry.CommandExecute">TaskRunLogEntry.CommandExecute</h3>
        <p>Command execution details.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>log_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>When the command was logged. </p></td>
                </tr>
              
                <tr>
                  <td>command_indexes</td>
                  <td><a href="#int32">int32</a></td>
                  <td>repeated</td>
                  <td><p>Either `command_indexes` or `statement` is set.
The indexes of the executed commands. </p></td>
                </tr>
              
                <tr>
                  <td>statement</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The executed statement. </p></td>
                </tr>
              
                <tr>
                  <td>response</td>
                  <td><a href="#bytebase.v1.TaskRunLogEntry.CommandExecute.CommandResponse">TaskRunLogEntry.CommandExecute.CommandResponse</a></td>
                  <td></td>
                  <td><p>The response from executing the command. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TaskRunLogEntry.CommandExecute.CommandResponse">TaskRunLogEntry.CommandExecute.CommandResponse</h3>
        <p>Command execution response.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>log_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>When the response was logged. </p></td>
                </tr>
              
                <tr>
                  <td>error</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Error message if command execution failed. </p></td>
                </tr>
              
                <tr>
                  <td>affected_rows</td>
                  <td><a href="#int64">int64</a></td>
                  <td></td>
                  <td><p>Total affected rows. </p></td>
                </tr>
              
                <tr>
                  <td>all_affected_rows</td>
                  <td><a href="#int64">int64</a></td>
                  <td>repeated</td>
                  <td><p>`all_affected_rows` is the affected rows of each command.
`all_affected_rows` may be unavailable if the database driver doesn&#39;t support it. Caller should fallback to `affected_rows` in that case. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TaskRunLogEntry.ComputeDiff">TaskRunLogEntry.ComputeDiff</h3>
        <p>Schema diff computation details.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>start_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>When diff computation started. </p></td>
                </tr>
              
                <tr>
                  <td>end_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>When diff computation ended. </p></td>
                </tr>
              
                <tr>
                  <td>error</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Error message if computation failed. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TaskRunLogEntry.DatabaseSync">TaskRunLogEntry.DatabaseSync</h3>
        <p>Database synchronization details.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>start_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>When the database sync started. </p></td>
                </tr>
              
                <tr>
                  <td>end_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>When the database sync ended. </p></td>
                </tr>
              
                <tr>
                  <td>error</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Error message if sync failed. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TaskRunLogEntry.PriorBackup">TaskRunLogEntry.PriorBackup</h3>
        <p>Prior backup operation details.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>start_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>When the backup started. </p></td>
                </tr>
              
                <tr>
                  <td>end_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>When the backup ended. </p></td>
                </tr>
              
                <tr>
                  <td>prior_backup_detail</td>
                  <td><a href="#bytebase.v1.TaskRun.PriorBackupDetail">TaskRun.PriorBackupDetail</a></td>
                  <td></td>
                  <td><p>The backup details. </p></td>
                </tr>
              
                <tr>
                  <td>error</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Error message if the backup failed. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TaskRunLogEntry.RetryInfo">TaskRunLogEntry.RetryInfo</h3>
        <p>Retry information for failed operations.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>error</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The error that triggered the retry. </p></td>
                </tr>
              
                <tr>
                  <td>retry_count</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>Current retry attempt number. </p></td>
                </tr>
              
                <tr>
                  <td>maximum_retries</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p>Maximum number of retries allowed. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TaskRunLogEntry.SchemaDump">TaskRunLogEntry.SchemaDump</h3>
        <p>Schema dump operation details.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>start_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>When the schema dump started. </p></td>
                </tr>
              
                <tr>
                  <td>end_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>When the schema dump ended. </p></td>
                </tr>
              
                <tr>
                  <td>error</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Error message if the schema dump failed. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TaskRunLogEntry.TaskRunStatusUpdate">TaskRunLogEntry.TaskRunStatusUpdate</h3>
        <p>Task run status update details.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>status</td>
                  <td><a href="#bytebase.v1.TaskRunLogEntry.TaskRunStatusUpdate.Status">TaskRunLogEntry.TaskRunStatusUpdate.Status</a></td>
                  <td></td>
                  <td><p>The new status. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TaskRunLogEntry.TransactionControl">TaskRunLogEntry.TransactionControl</h3>
        <p>Transaction control operation details.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.TaskRunLogEntry.TransactionControl.Type">TaskRunLogEntry.TransactionControl.Type</a></td>
                  <td></td>
                  <td><p>The type of transaction control. </p></td>
                </tr>
              
                <tr>
                  <td>error</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Error message if the operation failed. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TaskRunSession">TaskRunSession</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Format: projects/{project}/rollouts/{rollout}/stages/{stage}/tasks/{task}/taskRuns/{taskRun}/session </p></td>
                </tr>
              
                <tr>
                  <td>postgres</td>
                  <td><a href="#bytebase.v1.TaskRunSession.Postgres">TaskRunSession.Postgres</a></td>
                  <td></td>
                  <td><p>PostgreSQL session information. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TaskRunSession.Postgres">TaskRunSession.Postgres</h3>
        <p>PostgreSQL session information.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>session</td>
                  <td><a href="#bytebase.v1.TaskRunSession.Postgres.Session">TaskRunSession.Postgres.Session</a></td>
                  <td></td>
                  <td><p>`session` is the session of the task run executing commands. </p></td>
                </tr>
              
                <tr>
                  <td>blocking_sessions</td>
                  <td><a href="#bytebase.v1.TaskRunSession.Postgres.Session">TaskRunSession.Postgres.Session</a></td>
                  <td>repeated</td>
                  <td><p>`blocking_sessions` block `session`. </p></td>
                </tr>
              
                <tr>
                  <td>blocked_sessions</td>
                  <td><a href="#bytebase.v1.TaskRunSession.Postgres.Session">TaskRunSession.Postgres.Session</a></td>
                  <td>repeated</td>
                  <td><p>`blocked_sessions` are blocked by `session`. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.TaskRunSession.Postgres.Session">TaskRunSession.Postgres.Session</h3>
        <p>PostgreSQL session information read from `pg_stat_activity`.</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>pid</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Process ID of the session. </p></td>
                </tr>
              
                <tr>
                  <td>blocked_by_pids</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p>PIDs of sessions blocking this session. </p></td>
                </tr>
              
                <tr>
                  <td>query</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Current query being executed. </p></td>
                </tr>
              
                <tr>
                  <td>state</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>Session state (active, idle, etc.). </p></td>
                </tr>
              
                <tr>
                  <td>wait_event_type</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>Wait event type if session is waiting. </p></td>
                </tr>
              
                <tr>
                  <td>wait_event</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>Specific wait event if session is waiting. </p></td>
                </tr>
              
                <tr>
                  <td>datname</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>Database name. </p></td>
                </tr>
              
                <tr>
                  <td>usename</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>User name. </p></td>
                </tr>
              
                <tr>
                  <td>application_name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>Application name. </p></td>
                </tr>
              
                <tr>
                  <td>client_addr</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>Client IP address. </p></td>
                </tr>
              
                <tr>
                  <td>client_port</td>
                  <td><a href="#string">string</a></td>
                  <td>optional</td>
                  <td><p>Client port number. </p></td>
                </tr>
              
                <tr>
                  <td>backend_start</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>When the backend process started. </p></td>
                </tr>
              
                <tr>
                  <td>xact_start</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td>optional</td>
                  <td><p>When the current transaction started. </p></td>
                </tr>
              
                <tr>
                  <td>query_start</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td>optional</td>
                  <td><p>When the current query started. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.Task.Status">Task.Status</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>STATUS_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified status.</p></td>
              </tr>
            
              <tr>
                <td>NOT_STARTED</td>
                <td>1</td>
                <td><p>Task has not started and is awaiting its turn in the deployment sequence.</p></td>
              </tr>
            
              <tr>
                <td>PENDING</td>
                <td>2</td>
                <td><p>Task is ready to run and waiting for approval or scheduled time.</p></td>
              </tr>
            
              <tr>
                <td>RUNNING</td>
                <td>3</td>
                <td><p>Task is currently executing.</p></td>
              </tr>
            
              <tr>
                <td>DONE</td>
                <td>4</td>
                <td><p>Task completed successfully.</p></td>
              </tr>
            
              <tr>
                <td>FAILED</td>
                <td>5</td>
                <td><p>Task execution failed with errors.</p></td>
              </tr>
            
              <tr>
                <td>CANCELED</td>
                <td>6</td>
                <td><p>Task execution was canceled by a user.</p></td>
              </tr>
            
              <tr>
                <td>SKIPPED</td>
                <td>7</td>
                <td><p>Task was skipped and will not be executed.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.Task.Type">Task.Type</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified task type.</p></td>
              </tr>
            
              <tr>
                <td>GENERAL</td>
                <td>1</td>
                <td><p>General task for miscellaneous operations.</p></td>
              </tr>
            
              <tr>
                <td>DATABASE_CREATE</td>
                <td>2</td>
                <td><p>Database creation task that creates a new database.
Use payload DatabaseCreate.</p></td>
              </tr>
            
              <tr>
                <td>DATABASE_MIGRATE</td>
                <td>3</td>
                <td><p>Database migration task that applies versioned schema changes.
Use payload DatabaseUpdate.</p></td>
              </tr>
            
              <tr>
                <td>DATABASE_SDL</td>
                <td>6</td>
                <td><p>Database SDL (Schema Definition Language) task that synchronizes declarative schema.
Use payload DatabaseUpdate.</p></td>
              </tr>
            
              <tr>
                <td>DATABASE_EXPORT</td>
                <td>5</td>
                <td><p>Database export task that exports query results or table data.
Use payload DatabaseDataExport.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.TaskRun.ExportArchiveStatus">TaskRun.ExportArchiveStatus</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>EXPORT_ARCHIVE_STATUS_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified export archive status.</p></td>
              </tr>
            
              <tr>
                <td>READY</td>
                <td>1</td>
                <td><p>Export archive is ready for download.</p></td>
              </tr>
            
              <tr>
                <td>EXPORTED</td>
                <td>2</td>
                <td><p>Export archive has been downloaded by the user.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.TaskRun.Status">TaskRun.Status</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>STATUS_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified status.</p></td>
              </tr>
            
              <tr>
                <td>PENDING</td>
                <td>1</td>
                <td><p>Task run is queued and waiting to start execution.</p></td>
              </tr>
            
              <tr>
                <td>RUNNING</td>
                <td>2</td>
                <td><p>Task run is currently executing.</p></td>
              </tr>
            
              <tr>
                <td>DONE</td>
                <td>3</td>
                <td><p>Task run completed successfully.</p></td>
              </tr>
            
              <tr>
                <td>FAILED</td>
                <td>4</td>
                <td><p>Task run execution failed with errors.</p></td>
              </tr>
            
              <tr>
                <td>CANCELED</td>
                <td>5</td>
                <td><p>Task run execution was canceled by a user.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.TaskRunLogEntry.TaskRunStatusUpdate.Status">TaskRunLogEntry.TaskRunStatusUpdate.Status</h3>
        <p>Internal status for task run execution.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>STATUS_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified status.</p></td>
              </tr>
            
              <tr>
                <td>RUNNING_WAITING</td>
                <td>1</td>
                <td><p>The task run is ready to be executed by the scheduler.</p></td>
              </tr>
            
              <tr>
                <td>RUNNING_RUNNING</td>
                <td>2</td>
                <td><p>The task run is being executed by the scheduler.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.TaskRunLogEntry.TransactionControl.Type">TaskRunLogEntry.TransactionControl.Type</h3>
        <p>Transaction control type.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified type.</p></td>
              </tr>
            
              <tr>
                <td>BEGIN</td>
                <td>1</td>
                <td><p>Begin transaction.</p></td>
              </tr>
            
              <tr>
                <td>COMMIT</td>
                <td>2</td>
                <td><p>Commit transaction.</p></td>
              </tr>
            
              <tr>
                <td>ROLLBACK</td>
                <td>3</td>
                <td><p>Rollback transaction.</p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.TaskRunLogEntry.Type">TaskRunLogEntry.Type</h3>
        <p>The type of log entry.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified type.</p></td>
              </tr>
            
              <tr>
                <td>SCHEMA_DUMP</td>
                <td>1</td>
                <td><p>Schema dump operation.</p></td>
              </tr>
            
              <tr>
                <td>COMMAND_EXECUTE</td>
                <td>2</td>
                <td><p>Command execution.</p></td>
              </tr>
            
              <tr>
                <td>DATABASE_SYNC</td>
                <td>3</td>
                <td><p>Database synchronization.</p></td>
              </tr>
            
              <tr>
                <td>TASK_RUN_STATUS_UPDATE</td>
                <td>4</td>
                <td><p>Task run status update.</p></td>
              </tr>
            
              <tr>
                <td>TRANSACTION_CONTROL</td>
                <td>5</td>
                <td><p>Transaction control (BEGIN, COMMIT, ROLLBACK).</p></td>
              </tr>
            
              <tr>
                <td>PRIOR_BACKUP</td>
                <td>6</td>
                <td><p>Prior backup operation.</p></td>
              </tr>
            
              <tr>
                <td>RETRY_INFO</td>
                <td>7</td>
                <td><p>Retry information.</p></td>
              </tr>
            
              <tr>
                <td>COMPUTE_DIFF</td>
                <td>8</td>
                <td><p>Schema diff computation.</p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
        <h3 id="bytebase.v1.RolloutService">RolloutService</h3>
        <p>RolloutService manages the execution of deployment plans.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>GetRollout</td>
                <td><a href="#bytebase.v1.GetRolloutRequest">GetRolloutRequest</a></td>
                <td><a href="#bytebase.v1.Rollout">Rollout</a></td>
                <td><p>Retrieves a rollout by name.
Permissions required: bb.rollouts.get</p></td>
              </tr>
            
              <tr>
                <td>ListRollouts</td>
                <td><a href="#bytebase.v1.ListRolloutsRequest">ListRolloutsRequest</a></td>
                <td><a href="#bytebase.v1.ListRolloutsResponse">ListRolloutsResponse</a></td>
                <td><p>Lists rollouts in a project.
Permissions required: bb.rollouts.list</p></td>
              </tr>
            
              <tr>
                <td>CreateRollout</td>
                <td><a href="#bytebase.v1.CreateRolloutRequest">CreateRolloutRequest</a></td>
                <td><a href="#bytebase.v1.Rollout">Rollout</a></td>
                <td><p>Creates a new rollout from a plan.
Permissions required: bb.rollouts.create</p></td>
              </tr>
            
              <tr>
                <td>PreviewRollout</td>
                <td><a href="#bytebase.v1.PreviewRolloutRequest">PreviewRolloutRequest</a></td>
                <td><a href="#bytebase.v1.Rollout">Rollout</a></td>
                <td><p>Previews the rollout that would be created from a plan.
Permissions required: bb.rollouts.preview</p></td>
              </tr>
            
              <tr>
                <td>ListTaskRuns</td>
                <td><a href="#bytebase.v1.ListTaskRunsRequest">ListTaskRunsRequest</a></td>
                <td><a href="#bytebase.v1.ListTaskRunsResponse">ListTaskRunsResponse</a></td>
                <td><p>Lists task run executions for a task.
Permissions required: bb.taskRuns.list</p></td>
              </tr>
            
              <tr>
                <td>GetTaskRun</td>
                <td><a href="#bytebase.v1.GetTaskRunRequest">GetTaskRunRequest</a></td>
                <td><a href="#bytebase.v1.TaskRun">TaskRun</a></td>
                <td><p>Retrieves a task run by name.
Permissions required: bb.taskRuns.list</p></td>
              </tr>
            
              <tr>
                <td>GetTaskRunLog</td>
                <td><a href="#bytebase.v1.GetTaskRunLogRequest">GetTaskRunLogRequest</a></td>
                <td><a href="#bytebase.v1.TaskRunLog">TaskRunLog</a></td>
                <td><p>Retrieves execution logs for a task run.
Permissions required: bb.taskRuns.list</p></td>
              </tr>
            
              <tr>
                <td>GetTaskRunSession</td>
                <td><a href="#bytebase.v1.GetTaskRunSessionRequest">GetTaskRunSessionRequest</a></td>
                <td><a href="#bytebase.v1.TaskRunSession">TaskRunSession</a></td>
                <td><p>Retrieves database session information for a running task.
Permissions required: bb.taskRuns.list</p></td>
              </tr>
            
              <tr>
                <td>BatchRunTasks</td>
                <td><a href="#bytebase.v1.BatchRunTasksRequest">BatchRunTasksRequest</a></td>
                <td><a href="#bytebase.v1.BatchRunTasksResponse">BatchRunTasksResponse</a></td>
                <td><p>Executes multiple tasks in a rollout stage.
Permissions required: bb.taskRuns.create (or issue creator for data export issues, or user with rollout policy role for the environment)</p></td>
              </tr>
            
              <tr>
                <td>BatchSkipTasks</td>
                <td><a href="#bytebase.v1.BatchSkipTasksRequest">BatchSkipTasksRequest</a></td>
                <td><a href="#bytebase.v1.BatchSkipTasksResponse">BatchSkipTasksResponse</a></td>
                <td><p>Skips multiple tasks in a rollout stage.
Permissions required: bb.taskRuns.create (or issue creator for data export issues, or user with rollout policy role for the environment)</p></td>
              </tr>
            
              <tr>
                <td>BatchCancelTaskRuns</td>
                <td><a href="#bytebase.v1.BatchCancelTaskRunsRequest">BatchCancelTaskRunsRequest</a></td>
                <td><a href="#bytebase.v1.BatchCancelTaskRunsResponse">BatchCancelTaskRunsResponse</a></td>
                <td><p>Cancels multiple running task executions.
Permissions required: bb.taskRuns.create (or issue creator for data export issues, or user with rollout policy role for the environment)</p></td>
              </tr>
            
              <tr>
                <td>PreviewTaskRunRollback</td>
                <td><a href="#bytebase.v1.PreviewTaskRunRollbackRequest">PreviewTaskRunRollbackRequest</a></td>
                <td><a href="#bytebase.v1.PreviewTaskRunRollbackResponse">PreviewTaskRunRollbackResponse</a></td>
                <td><p>Generates rollback SQL for a completed task run.
Permissions required: bb.taskRuns.list</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>GetRollout</td>
                <td>GET</td>
                <td>/v1/{name=projects/*/rollouts/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>ListRollouts</td>
                <td>GET</td>
                <td>/v1/{parent=projects/*}/rollouts</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>CreateRollout</td>
                <td>POST</td>
                <td>/v1/{parent=projects/*}/rollouts</td>
                <td>rollout</td>
              </tr>
              
            
              
              
              <tr>
                <td>PreviewRollout</td>
                <td>POST</td>
                <td>/v1/{project=projects/*}:previewRollout</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>ListTaskRuns</td>
                <td>GET</td>
                <td>/v1/{parent=projects/*/rollouts/*/stages/*/tasks/*}/taskRuns</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>GetTaskRun</td>
                <td>GET</td>
                <td>/v1/{name=projects/*/rollouts/*/stages/*/tasks/*/taskRuns/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>GetTaskRunLog</td>
                <td>GET</td>
                <td>/v1/{parent=projects/*/rollouts/*/stages/*/tasks/*/taskRuns/*}/log</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>GetTaskRunSession</td>
                <td>GET</td>
                <td>/v1/{parent=projects/*/rollouts/*/stages/*/tasks/*/taskRuns/*}/session</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>BatchRunTasks</td>
                <td>POST</td>
                <td>/v1/{parent=projects/*/rollouts/*/stages/*}/tasks:batchRun</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>BatchSkipTasks</td>
                <td>POST</td>
                <td>/v1/{parent=projects/*/rollouts/*/stages/*}/tasks:batchSkip</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>BatchCancelTaskRuns</td>
                <td>POST</td>
                <td>/v1/{parent=projects/*/rollouts/*/stages/*/tasks/*}/taskRuns:batchCancel</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>PreviewTaskRunRollback</td>
                <td>POST</td>
                <td>/v1/{name=projects/*/rollouts/*/stages/*/tasks/*/taskRuns/*}:previewRollback</td>
                <td>*</td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/sheet_service.proto">v1/sheet_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.BatchCreateSheetsRequest">BatchCreateSheetsRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent resource where all sheets will be created.
Format: projects/{project} </p></td>
                </tr>
              
                <tr>
                  <td>requests</td>
                  <td><a href="#bytebase.v1.CreateSheetRequest">CreateSheetRequest</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchCreateSheetsResponse">BatchCreateSheetsResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>sheets</td>
                  <td><a href="#bytebase.v1.Sheet">Sheet</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.CreateSheetRequest">CreateSheetRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>parent</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The parent resource where this sheet will be created.
Format: projects/{project} </p></td>
                </tr>
              
                <tr>
                  <td>sheet</td>
                  <td><a href="#bytebase.v1.Sheet">Sheet</a></td>
                  <td></td>
                  <td><p>The sheet to create. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetSheetRequest">GetSheetRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the sheet to retrieve.
Format: projects/{project}/sheets/{sheet} </p></td>
                </tr>
              
                <tr>
                  <td>raw</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>By default, the content of the sheet is cut off, set the `raw` to true to retrieve the full content. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Sheet">Sheet</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the sheet resource.
Format: projects/{project}/sheets/{sheet}
The sheet ID is generated by the server on creation and cannot be changed. </p></td>
                </tr>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The title of the sheet. </p></td>
                </tr>
              
                <tr>
                  <td>creator</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The creator of the Sheet.
Format: users/{email} </p></td>
                </tr>
              
                <tr>
                  <td>create_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>The create time of the sheet. </p></td>
                </tr>
              
                <tr>
                  <td>content</td>
                  <td><a href="#bytes">bytes</a></td>
                  <td></td>
                  <td><p>The content of the sheet.
By default, it will be cut off, if it doesn&#39;t match the `content_size`, you can
set the `raw` to true in GetSheet request to retrieve the full content. </p></td>
                </tr>
              
                <tr>
                  <td>content_size</td>
                  <td><a href="#int64">int64</a></td>
                  <td></td>
                  <td><p>content_size is the full size of the content, may not match the size of the `content` field. </p></td>
                </tr>
              
                <tr>
                  <td>payload</td>
                  <td><a href="#bytebase.v1.SheetPayload">SheetPayload</a></td>
                  <td></td>
                  <td><p>Additional metadata and configuration for the sheet. </p></td>
                </tr>
              
                <tr>
                  <td>engine</td>
                  <td><a href="#bytebase.v1.Engine">Engine</a></td>
                  <td></td>
                  <td><p>The SQL dialect. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SheetCommand">SheetCommand</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>start</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>end</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SheetPayload">SheetPayload</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.SheetPayload.Type">SheetPayload.Type</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>commands</td>
                  <td><a href="#bytebase.v1.SheetCommand">SheetCommand</a></td>
                  <td>repeated</td>
                  <td><p>The start and end position of each command in the sheet statement. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UpdateSheetRequest">UpdateSheetRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>sheet</td>
                  <td><a href="#bytebase.v1.Sheet">Sheet</a></td>
                  <td></td>
                  <td><p>The sheet to update.

The sheet&#39;s `name` field is used to identify the sheet to update.
Format: projects/{project}/sheets/{sheet} </p></td>
                </tr>
              
                <tr>
                  <td>update_mask</td>
                  <td><a href="#google.protobuf.FieldMask">google.protobuf.FieldMask</a></td>
                  <td></td>
                  <td><p>The list of fields to be updated.
Fields are specified relative to the sheet.
(e.g., `title`, `statement`; *not* `sheet.title` or `sheet.statement`)
Only support update the following fields for now:
- `title`
- `statement` </p></td>
                </tr>
              
                <tr>
                  <td>allow_missing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, and the sheet is not found, a new sheet will be created.
In this situation, `update_mask` is ignored. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.SheetPayload.Type">SheetPayload.Type</h3>
        <p>Type of the SheetPayload.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>SCHEMA_DESIGN</td>
                <td>1</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
        <h3 id="bytebase.v1.SheetService">SheetService</h3>
        <p>SheetService manages SQL scripts and saved queries.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>CreateSheet</td>
                <td><a href="#bytebase.v1.CreateSheetRequest">CreateSheetRequest</a></td>
                <td><a href="#bytebase.v1.Sheet">Sheet</a></td>
                <td><p>Creates a new SQL sheet.
Permissions required: bb.sheets.create</p></td>
              </tr>
            
              <tr>
                <td>BatchCreateSheets</td>
                <td><a href="#bytebase.v1.BatchCreateSheetsRequest">BatchCreateSheetsRequest</a></td>
                <td><a href="#bytebase.v1.BatchCreateSheetsResponse">BatchCreateSheetsResponse</a></td>
                <td><p>Creates multiple SQL sheets in a single operation.
Permissions required: bb.sheets.create</p></td>
              </tr>
            
              <tr>
                <td>GetSheet</td>
                <td><a href="#bytebase.v1.GetSheetRequest">GetSheetRequest</a></td>
                <td><a href="#bytebase.v1.Sheet">Sheet</a></td>
                <td><p>Retrieves a SQL sheet by name.
Permissions required: bb.sheets.get</p></td>
              </tr>
            
              <tr>
                <td>UpdateSheet</td>
                <td><a href="#bytebase.v1.UpdateSheetRequest">UpdateSheetRequest</a></td>
                <td><a href="#bytebase.v1.Sheet">Sheet</a></td>
                <td><p>Updates a SQL sheet&#39;s title or content.
Permissions required: bb.sheets.update</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>CreateSheet</td>
                <td>POST</td>
                <td>/v1/{parent=projects/*}/sheets</td>
                <td>sheet</td>
              </tr>
              
            
              
              
              <tr>
                <td>BatchCreateSheets</td>
                <td>POST</td>
                <td>/v1/{parent=projects/*}/sheets:batchCreate</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>GetSheet</td>
                <td>GET</td>
                <td>/v1/{name=projects/*/sheets/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>UpdateSheet</td>
                <td>PATCH</td>
                <td>/v1/{sheet.name=projects/*/sheets/*}</td>
                <td>sheet</td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/subscription_service.proto">v1/subscription_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.GetSubscriptionRequest">GetSubscriptionRequest</h3>
        <p></p>

        

        
      
        <h3 id="bytebase.v1.PlanConfig">PlanConfig</h3>
        <p>PlanConfig represents the configuration for all plans loaded from plan.yaml</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>plans</td>
                  <td><a href="#bytebase.v1.PlanLimitConfig">PlanLimitConfig</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>instance_features</td>
                  <td><a href="#bytebase.v1.PlanFeature">PlanFeature</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.PlanLimitConfig">PlanLimitConfig</h3>
        <p>PlanLimitConfig represents a single plan's configuration</p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>type</td>
                  <td><a href="#bytebase.v1.PlanType">PlanType</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>maximum_instance_count</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>maximum_seat_count</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>features</td>
                  <td><a href="#bytebase.v1.PlanFeature">PlanFeature</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Subscription">Subscription</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>plan</td>
                  <td><a href="#bytebase.v1.PlanType">PlanType</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>seats</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>instances</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>active_instances</td>
                  <td><a href="#int32">int32</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>expires_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>trialing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>org_name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UpdateSubscriptionRequest">UpdateSubscriptionRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>license</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>allow_missing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, and the subscription is not found, a new subscription will be created.
In this situation, `update_mask` is ignored. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.PlanFeature">PlanFeature</h3>
        <p>PlanFeature represents the available features in Bytebase</p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>FEATURE_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_DATABASE_CHANGE</td>
                <td>1</td>
                <td><p>Database Change Management</p></td>
              </tr>
            
              <tr>
                <td>FEATURE_GIT_BASED_SCHEMA_VERSION_CONTROL</td>
                <td>2</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_DECLARATIVE_SCHEMA_MIGRATION</td>
                <td>3</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_COMPARE_AND_SYNC_SCHEMA</td>
                <td>4</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_ONLINE_SCHEMA_CHANGE</td>
                <td>5</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_PRE_DEPLOYMENT_SQL_REVIEW</td>
                <td>6</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_AUTOMATIC_BACKUP_BEFORE_DATA_CHANGES</td>
                <td>7</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_ONE_CLICK_DATA_ROLLBACK</td>
                <td>8</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_MULTI_DATABASE_BATCH_CHANGES</td>
                <td>9</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_PROGRESSIVE_ENVIRONMENT_DEPLOYMENT</td>
                <td>10</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_SCHEDULED_ROLLOUT_TIME</td>
                <td>11</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_DATABASE_CHANGELOG</td>
                <td>12</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_SCHEMA_DRIFT_DETECTION</td>
                <td>13</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_SCHEMA_TEMPLATE</td>
                <td>15</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_ROLLOUT_POLICY</td>
                <td>16</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_WEB_BASED_SQL_EDITOR</td>
                <td>17</td>
                <td><p>SQL Editor &amp; Development</p></td>
              </tr>
            
              <tr>
                <td>FEATURE_SQL_EDITOR_ADMIN_MODE</td>
                <td>18</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_NATURAL_LANGUAGE_TO_SQL</td>
                <td>19</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_AI_QUERY_EXPLANATION</td>
                <td>20</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_AI_QUERY_SUGGESTIONS</td>
                <td>21</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_AUTO_COMPLETE</td>
                <td>22</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_SCHEMA_DIAGRAM</td>
                <td>23</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_SCHEMA_EDITOR</td>
                <td>24</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_DATA_EXPORT</td>
                <td>25</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_DATA_OFFLINE_EXPORT</td>
                <td>26</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_QUERY_HISTORY</td>
                <td>27</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_SAVED_AND_SHARED_SQL_SCRIPTS</td>
                <td>28</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_BATCH_QUERY</td>
                <td>29</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_INSTANCE_READ_ONLY_CONNECTION</td>
                <td>30</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_QUERY_POLICY</td>
                <td>31</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_RESTRICT_COPYING_DATA</td>
                <td>32</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_IAM</td>
                <td>33</td>
                <td><p>Security &amp; Compliance</p></td>
              </tr>
            
              <tr>
                <td>FEATURE_INSTANCE_SSL_CONNECTION</td>
                <td>34</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_INSTANCE_CONNECTION_OVER_SSH_TUNNEL</td>
                <td>35</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_INSTANCE_CONNECTION_IAM_AUTHENTICATION</td>
                <td>36</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_GOOGLE_AND_GITHUB_SSO</td>
                <td>37</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_USER_GROUPS</td>
                <td>38</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_DISALLOW_SELF_SERVICE_SIGNUP</td>
                <td>39</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_CUSTOM_INSTANCE_SYNC_TIME</td>
                <td>41</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_CUSTOM_INSTANCE_CONNECTION_LIMIT</td>
                <td>42</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_RISK_ASSESSMENT</td>
                <td>43</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_APPROVAL_WORKFLOW</td>
                <td>44</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_AUDIT_LOG</td>
                <td>45</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_ENTERPRISE_SSO</td>
                <td>46</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_TWO_FA</td>
                <td>47</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_PASSWORD_RESTRICTIONS</td>
                <td>48</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_DISALLOW_PASSWORD_SIGNIN</td>
                <td>49</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_CUSTOM_ROLES</td>
                <td>50</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_REQUEST_ROLE_WORKFLOW</td>
                <td>51</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_DATA_MASKING</td>
                <td>52</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_DATA_CLASSIFICATION</td>
                <td>53</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_SCIM</td>
                <td>54</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_DIRECTORY_SYNC</td>
                <td>55</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_SIGN_IN_FREQUENCY_CONTROL</td>
                <td>56</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_EXTERNAL_SECRET_MANAGER</td>
                <td>57</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_USER_EMAIL_DOMAIN_RESTRICTION</td>
                <td>58</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_PROJECT_MANAGEMENT</td>
                <td>59</td>
                <td><p>Administration &amp; Support</p></td>
              </tr>
            
              <tr>
                <td>FEATURE_ENVIRONMENT_MANAGEMENT</td>
                <td>60</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_IM_NOTIFICATIONS</td>
                <td>61</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_TERRAFORM_PROVIDER</td>
                <td>62</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_DATABASE_GROUPS</td>
                <td>63</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_ENVIRONMENT_TIERS</td>
                <td>64</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_DASHBOARD_ANNOUNCEMENT</td>
                <td>65</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_API_INTEGRATION_GUIDANCE</td>
                <td>66</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_CUSTOM_LOGO</td>
                <td>67</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_WATERMARK</td>
                <td>68</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_ROADMAP_PRIORITIZATION</td>
                <td>69</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_CUSTOM_MSA</td>
                <td>70</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_COMMUNITY_SUPPORT</td>
                <td>71</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_EMAIL_SUPPORT</td>
                <td>72</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>FEATURE_DEDICATED_SUPPORT_WITH_SLA</td>
                <td>73</td>
                <td><p></p></td>
              </tr>
            
          </tbody>
        </table>
      
        <h3 id="bytebase.v1.PlanType">PlanType</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>PLAN_TYPE_UNSPECIFIED</td>
                <td>0</td>
                <td><p>Unspecified plan type.</p></td>
              </tr>
            
              <tr>
                <td>FREE</td>
                <td>1</td>
                <td><p>Free plan with basic features and no cost.</p></td>
              </tr>
            
              <tr>
                <td>TEAM</td>
                <td>2</td>
                <td><p>Team plan with collaboration features for small to medium teams.</p></td>
              </tr>
            
              <tr>
                <td>ENTERPRISE</td>
                <td>3</td>
                <td><p>Enterprise plan with advanced features and dedicated support.</p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
        <h3 id="bytebase.v1.SubscriptionService">SubscriptionService</h3>
        <p>SubscriptionService manages enterprise subscriptions and licensing.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>GetSubscription</td>
                <td><a href="#bytebase.v1.GetSubscriptionRequest">GetSubscriptionRequest</a></td>
                <td><a href="#bytebase.v1.Subscription">Subscription</a></td>
                <td><p>GetSubscription returns the current subscription.
If there is no license, we will return a free plan subscription without expiration time.
If there is expired license, we will return a free plan subscription with the expiration time of the expired license.
Permissions required: None</p></td>
              </tr>
            
              <tr>
                <td>UpdateSubscription</td>
                <td><a href="#bytebase.v1.UpdateSubscriptionRequest">UpdateSubscriptionRequest</a></td>
                <td><a href="#bytebase.v1.Subscription">Subscription</a></td>
                <td><p>Updates the enterprise license subscription.
Permissions required: bb.settings.set</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>GetSubscription</td>
                <td>GET</td>
                <td>/v1/subscription</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>UpdateSubscription</td>
                <td>PATCH</td>
                <td>/v1/subscription</td>
                <td>license</td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/worksheet_service.proto">v1/worksheet_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      
        <h3 id="bytebase.v1.BatchUpdateWorksheetOrganizerRequest">BatchUpdateWorksheetOrganizerRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>requests</td>
                  <td><a href="#bytebase.v1.UpdateWorksheetOrganizerRequest">UpdateWorksheetOrganizerRequest</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.BatchUpdateWorksheetOrganizerResponse">BatchUpdateWorksheetOrganizerResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>worksheet_organizers</td>
                  <td><a href="#bytebase.v1.WorksheetOrganizer">WorksheetOrganizer</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.CreateWorksheetRequest">CreateWorksheetRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>worksheet</td>
                  <td><a href="#bytebase.v1.Worksheet">Worksheet</a></td>
                  <td></td>
                  <td><p>The worksheet to create. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.DeleteWorksheetRequest">DeleteWorksheetRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the worksheet to delete.
Format: worksheets/{worksheet} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.GetWorksheetRequest">GetWorksheetRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the worksheet to retrieve.
Format: worksheets/{worksheet} </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SearchWorksheetsRequest">SearchWorksheetsRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>filter</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>To filter the search result.
The syntax and semantics of CEL are documented at https://github.com/google/cel-spec

Supported filter:
- creator: the worksheet creator in &#34;users/{email}&#34; format, support &#34;==&#34; and &#34;!=&#34; operator.
- starred: should be &#34;true&#34; or &#34;false&#34;, filter starred/unstarred sheets, support &#34;==&#34; operator.
- visibility: check Visibility enum in the Worksheet message for values, support &#34;==&#34; and &#34;in [xx]&#34; operator.
- project: the project full name in &#34;projects/{id}&#34; format, support &#34;==&#34; operator.

For example:
creator == &#34;users/{email}&#34;
creator != &#34;users/{email}&#34;
starred == true
starred == false
visibility in [&#34;PRIVATE&#34;, &#34;PROJECT_READ&#34;, &#34;PROJECT_WRITE&#34;]
visibility == &#34;PRIVATE&#34;
project == &#34;projects/{project resource id}&#34; </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.SearchWorksheetsResponse">SearchWorksheetsResponse</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>worksheets</td>
                  <td><a href="#bytebase.v1.Worksheet">Worksheet</a></td>
                  <td>repeated</td>
                  <td><p>The worksheets that matched the search criteria. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UpdateWorksheetOrganizerRequest">UpdateWorksheetOrganizerRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>organizer</td>
                  <td><a href="#bytebase.v1.WorksheetOrganizer">WorksheetOrganizer</a></td>
                  <td></td>
                  <td><p>The organizer to update.

The organizer&#39;s `worksheet` field is used to identify the worksheet.
Format: worksheets/{worksheet} </p></td>
                </tr>
              
                <tr>
                  <td>update_mask</td>
                  <td><a href="#google.protobuf.FieldMask">google.protobuf.FieldMask</a></td>
                  <td></td>
                  <td><p>The list of fields to be updated.
Fields are specified relative to the worksheet organizer.
Only support update the following fields for now:
- `starred` </p></td>
                </tr>
              
                <tr>
                  <td>allow_missing</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>If set to true, and the worksheet organizer is not found, a new worksheet organizer will be created.
In this situation, `update_mask` is ignored. </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.UpdateWorksheetRequest">UpdateWorksheetRequest</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>worksheet</td>
                  <td><a href="#bytebase.v1.Worksheet">Worksheet</a></td>
                  <td></td>
                  <td><p>The worksheet to update.

The worksheet&#39;s `name` field is used to identify the worksheet to update.
Format: worksheets/{worksheet} </p></td>
                </tr>
              
                <tr>
                  <td>update_mask</td>
                  <td><a href="#google.protobuf.FieldMask">google.protobuf.FieldMask</a></td>
                  <td></td>
                  <td><p>The list of fields to be updated.
Fields are specified relative to the worksheet.
(e.g., `title`, `statement`; *not* `worksheet.title` or `worksheet.statement`)
Only support update the following fields for now:
- `title`
- `statement`
- `starred`
- `visibility` </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.Worksheet">Worksheet</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>name</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the worksheet resource, generated by the server.
Canonical parent is project.
Format: worksheets/{worksheet} </p></td>
                </tr>
              
                <tr>
                  <td>project</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The project resource name.
Format: projects/{project} </p></td>
                </tr>
              
                <tr>
                  <td>database</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The database resource name.
Format: instances/{instance}/databases/{database}
If the database parent doesn&#39;t exist, the database field is empty. </p></td>
                </tr>
              
                <tr>
                  <td>title</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The title of the worksheet. </p></td>
                </tr>
              
                <tr>
                  <td>creator</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The creator of the Worksheet.
Format: users/{email} </p></td>
                </tr>
              
                <tr>
                  <td>create_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>The create time of the worksheet. </p></td>
                </tr>
              
                <tr>
                  <td>update_time</td>
                  <td><a href="#google.protobuf.Timestamp">google.protobuf.Timestamp</a></td>
                  <td></td>
                  <td><p>The last update time of the worksheet. </p></td>
                </tr>
              
                <tr>
                  <td>content</td>
                  <td><a href="#bytes">bytes</a></td>
                  <td></td>
                  <td><p>The content of the worksheet.
By default, it will be cut off in SearchWorksheet() method. If it doesn&#39;t match the `content_size`, you can
use GetWorksheet() request to retrieve the full content. </p></td>
                </tr>
              
                <tr>
                  <td>content_size</td>
                  <td><a href="#int64">int64</a></td>
                  <td></td>
                  <td><p>content_size is the full size of the content, may not match the size of the `content` field. </p></td>
                </tr>
              
                <tr>
                  <td>visibility</td>
                  <td><a href="#bytebase.v1.Worksheet.Visibility">Worksheet.Visibility</a></td>
                  <td></td>
                  <td><p> </p></td>
                </tr>
              
                <tr>
                  <td>starred</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>starred indicates whether the worksheet is starred by the current authenticated user. </p></td>
                </tr>
              
                <tr>
                  <td>folders</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      
        <h3 id="bytebase.v1.WorksheetOrganizer">WorksheetOrganizer</h3>
        <p></p>

        
          <table class="field-table">
            <thead>
              <tr><td>Field</td><td>Type</td><td>Label</td><td>Description</td></tr>
            </thead>
            <tbody>
              
                <tr>
                  <td>worksheet</td>
                  <td><a href="#string">string</a></td>
                  <td></td>
                  <td><p>The name of the worksheet.
Format: worksheets/{worksheet} </p></td>
                </tr>
              
                <tr>
                  <td>starred</td>
                  <td><a href="#bool">bool</a></td>
                  <td></td>
                  <td><p>starred means if the worksheet is starred. </p></td>
                </tr>
              
                <tr>
                  <td>folders</td>
                  <td><a href="#string">string</a></td>
                  <td>repeated</td>
                  <td><p> </p></td>
                </tr>
              
            </tbody>
          </table>

          

        
      

      
        <h3 id="bytebase.v1.Worksheet.Visibility">Worksheet.Visibility</h3>
        <p></p>
        <table class="enum-table">
          <thead>
            <tr><td>Name</td><td>Number</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>VISIBILITY_UNSPECIFIED</td>
                <td>0</td>
                <td><p></p></td>
              </tr>
            
              <tr>
                <td>PROJECT_READ</td>
                <td>1</td>
                <td><p>Read access in project scope, worksheet OWNER/DBA and project OWNER can read/write, other project members can read.</p></td>
              </tr>
            
              <tr>
                <td>PROJECT_WRITE</td>
                <td>2</td>
                <td><p>Write access in project scope, worksheet OWNER/DBA and all members in the project can write the worksheet.</p></td>
              </tr>
            
              <tr>
                <td>PRIVATE</td>
                <td>3</td>
                <td><p>Private, only worksheet OWNER can read/write.</p></td>
              </tr>
            
          </tbody>
        </table>
      

      

      
        <h3 id="bytebase.v1.WorksheetService">WorksheetService</h3>
        <p>WorksheetService manages SQL worksheets for query development.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>CreateWorksheet</td>
                <td><a href="#bytebase.v1.CreateWorksheetRequest">CreateWorksheetRequest</a></td>
                <td><a href="#bytebase.v1.Worksheet">Worksheet</a></td>
                <td><p>Creates a personal worksheet used in SQL Editor. Any authenticated user can create their own worksheets.
Permissions required: None (authenticated users only)</p></td>
              </tr>
            
              <tr>
                <td>GetWorksheet</td>
                <td><a href="#bytebase.v1.GetWorksheetRequest">GetWorksheetRequest</a></td>
                <td><a href="#bytebase.v1.Worksheet">Worksheet</a></td>
                <td><p>Get a worksheet by name.
The users can access this method if,
- they are the creator of the worksheet;
- they have bb.worksheets.get permission on the workspace;
- the sheet is shared with them with PROJECT_READ and PROJECT_WRITE visibility, and they have bb.projects.get permission on the project.
Permissions required: bb.worksheets.get (or creator, or project member for shared worksheets)</p></td>
              </tr>
            
              <tr>
                <td>SearchWorksheets</td>
                <td><a href="#bytebase.v1.SearchWorksheetsRequest">SearchWorksheetsRequest</a></td>
                <td><a href="#bytebase.v1.SearchWorksheetsResponse">SearchWorksheetsResponse</a></td>
                <td><p>Search for worksheets.
This is used for finding my worksheets or worksheets shared by other people.
The sheet accessibility is the same as GetWorksheet().
Permissions required: bb.worksheets.get (or creator, or project member for shared worksheets)</p></td>
              </tr>
            
              <tr>
                <td>UpdateWorksheet</td>
                <td><a href="#bytebase.v1.UpdateWorksheetRequest">UpdateWorksheetRequest</a></td>
                <td><a href="#bytebase.v1.Worksheet">Worksheet</a></td>
                <td><p>Update a worksheet.
The users can access this method if,
- they are the creator of the worksheet;
- they have bb.worksheets.manage permission on the workspace;
- the sheet is shared with them with PROJECT_WRITE visibility, and they have bb.projects.get permission on the project.
Permissions required: bb.worksheets.manage (or creator, or project member for PROJECT_WRITE worksheets)</p></td>
              </tr>
            
              <tr>
                <td>UpdateWorksheetOrganizer</td>
                <td><a href="#bytebase.v1.UpdateWorksheetOrganizerRequest">UpdateWorksheetOrganizerRequest</a></td>
                <td><a href="#bytebase.v1.WorksheetOrganizer">WorksheetOrganizer</a></td>
                <td><p>Update the organizer of a worksheet.
The access is the same as UpdateWorksheet method.
Permissions required: bb.worksheets.get (or creator, or project member for shared worksheets)</p></td>
              </tr>
            
              <tr>
                <td>BatchUpdateWorksheetOrganizer</td>
                <td><a href="#bytebase.v1.BatchUpdateWorksheetOrganizerRequest">BatchUpdateWorksheetOrganizerRequest</a></td>
                <td><a href="#bytebase.v1.BatchUpdateWorksheetOrganizerResponse">BatchUpdateWorksheetOrganizerResponse</a></td>
                <td><p>Batch update the organizers of worksheets.
The access is the same as UpdateWorksheet method.
Permissions required: bb.worksheets.get (or creator, or project member for shared worksheets)</p></td>
              </tr>
            
              <tr>
                <td>DeleteWorksheet</td>
                <td><a href="#bytebase.v1.DeleteWorksheetRequest">DeleteWorksheetRequest</a></td>
                <td><a href="#google.protobuf.Empty">.google.protobuf.Empty</a></td>
                <td><p>Delete a worksheet.
The access is the same as UpdateWorksheet method.
Permissions required: bb.worksheets.manage (or creator, or project member for PROJECT_WRITE worksheets)</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>CreateWorksheet</td>
                <td>POST</td>
                <td>/v1/worksheets</td>
                <td>worksheet</td>
              </tr>
              
            
              
              
              <tr>
                <td>GetWorksheet</td>
                <td>GET</td>
                <td>/v1/{name=worksheets/*}</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>SearchWorksheets</td>
                <td>POST</td>
                <td>/v1/worksheets:search</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>UpdateWorksheet</td>
                <td>PATCH</td>
                <td>/v1/{worksheet.name=worksheets/*}</td>
                <td>worksheet</td>
              </tr>
              
            
              
              
              <tr>
                <td>UpdateWorksheetOrganizer</td>
                <td>PATCH</td>
                <td>/v1/{organizer.worksheet=worksheets/*}/organizer</td>
                <td>organizer</td>
              </tr>
              
            
              
              
              <tr>
                <td>BatchUpdateWorksheetOrganizer</td>
                <td>PATCH</td>
                <td>/v1/worksheets/organizer:batchUpdate</td>
                <td>*</td>
              </tr>
              
            
              
              
              <tr>
                <td>DeleteWorksheet</td>
                <td>DELETE</td>
                <td>/v1/{name=worksheets/*}</td>
                <td></td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    
      
      <div class="file-heading">
        <h2 id="v1/workspace_service.proto">v1/workspace_service.proto</h2><a href="#title">Top</a>
      </div>
      <p></p>

      

      

      

      
        <h3 id="bytebase.v1.WorkspaceService">WorkspaceService</h3>
        <p>WorkspaceService manages workspace-level operations and profile.</p>
        <table class="enum-table">
          <thead>
            <tr><td>Method Name</td><td>Request Type</td><td>Response Type</td><td>Description</td></tr>
          </thead>
          <tbody>
            
              <tr>
                <td>GetIamPolicy</td>
                <td><a href="#bytebase.v1.GetIamPolicyRequest">GetIamPolicyRequest</a></td>
                <td><a href="#bytebase.v1.IamPolicy">IamPolicy</a></td>
                <td><p>Retrieves IAM policy for the workspace.
Permissions required: bb.workspaces.getIamPolicy</p></td>
              </tr>
            
              <tr>
                <td>SetIamPolicy</td>
                <td><a href="#bytebase.v1.SetIamPolicyRequest">SetIamPolicyRequest</a></td>
                <td><a href="#bytebase.v1.IamPolicy">IamPolicy</a></td>
                <td><p>Sets IAM policy for the workspace.
Permissions required: bb.workspaces.setIamPolicy</p></td>
              </tr>
            
          </tbody>
        </table>

        
          
          
          <h4>Methods with HTTP bindings</h4>
          <table>
            <thead>
              <tr>
                <td>Method Name</td>
                <td>Method</td>
                <td>Pattern</td>
                <td>Body</td>
              </tr>
            </thead>
            <tbody>
            
              
              
              <tr>
                <td>GetIamPolicy</td>
                <td>GET</td>
                <td>/v1/{resource=workspaces/*}:getIamPolicy</td>
                <td></td>
              </tr>
              
            
              
              
              <tr>
                <td>SetIamPolicy</td>
                <td>POST</td>
                <td>/v1/{resource=workspaces/*}:setIamPolicy</td>
                <td>*</td>
              </tr>
              
            
            </tbody>
          </table>
          
        
    

    <h2 id="scalar-value-types">Scalar Value Types</h2>
    <table class="scalar-value-types-table">
      <thead>
        <tr><td>.proto Type</td><td>Notes</td><td>C++</td><td>Java</td><td>Python</td><td>Go</td><td>C#</td><td>PHP</td><td>Ruby</td></tr>
      </thead>
      <tbody>
        
          <tr id="double">
            <td>double</td>
            <td></td>
            <td>double</td>
            <td>double</td>
            <td>float</td>
            <td>float64</td>
            <td>double</td>
            <td>float</td>
            <td>Float</td>
          </tr>
        
          <tr id="float">
            <td>float</td>
            <td></td>
            <td>float</td>
            <td>float</td>
            <td>float</td>
            <td>float32</td>
            <td>float</td>
            <td>float</td>
            <td>Float</td>
          </tr>
        
          <tr id="int32">
            <td>int32</td>
            <td>Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.</td>
            <td>int32</td>
            <td>int</td>
            <td>int</td>
            <td>int32</td>
            <td>int</td>
            <td>integer</td>
            <td>Bignum or Fixnum (as required)</td>
          </tr>
        
          <tr id="int64">
            <td>int64</td>
            <td>Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.</td>
            <td>int64</td>
            <td>long</td>
            <td>int/long</td>
            <td>int64</td>
            <td>long</td>
            <td>integer/string</td>
            <td>Bignum</td>
          </tr>
        
          <tr id="uint32">
            <td>uint32</td>
            <td>Uses variable-length encoding.</td>
            <td>uint32</td>
            <td>int</td>
            <td>int/long</td>
            <td>uint32</td>
            <td>uint</td>
            <td>integer</td>
            <td>Bignum or Fixnum (as required)</td>
          </tr>
        
          <tr id="uint64">
            <td>uint64</td>
            <td>Uses variable-length encoding.</td>
            <td>uint64</td>
            <td>long</td>
            <td>int/long</td>
            <td>uint64</td>
            <td>ulong</td>
            <td>integer/string</td>
            <td>Bignum or Fixnum (as required)</td>
          </tr>
        
          <tr id="sint32">
            <td>sint32</td>
            <td>Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.</td>
            <td>int32</td>
            <td>int</td>
            <td>int</td>
            <td>int32</td>
            <td>int</td>
            <td>integer</td>
            <td>Bignum or Fixnum (as required)</td>
          </tr>
        
          <tr id="sint64">
            <td>sint64</td>
            <td>Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.</td>
            <td>int64</td>
            <td>long</td>
            <td>int/long</td>
            <td>int64</td>
            <td>long</td>
            <td>integer/string</td>
            <td>Bignum</td>
          </tr>
        
          <tr id="fixed32">
            <td>fixed32</td>
            <td>Always four bytes. More efficient than uint32 if values are often greater than 2^28.</td>
            <td>uint32</td>
            <td>int</td>
            <td>int</td>
            <td>uint32</td>
            <td>uint</td>
            <td>integer</td>
            <td>Bignum or Fixnum (as required)</td>
          </tr>
        
          <tr id="fixed64">
            <td>fixed64</td>
            <td>Always eight bytes. More efficient than uint64 if values are often greater than 2^56.</td>
            <td>uint64</td>
            <td>long</td>
            <td>int/long</td>
            <td>uint64</td>
            <td>ulong</td>
            <td>integer/string</td>
            <td>Bignum</td>
          </tr>
        
          <tr id="sfixed32">
            <td>sfixed32</td>
            <td>Always four bytes.</td>
            <td>int32</td>
            <td>int</td>
            <td>int</td>
            <td>int32</td>
            <td>int</td>
            <td>integer</td>
            <td>Bignum or Fixnum (as required)</td>
          </tr>
        
          <tr id="sfixed64">
            <td>sfixed64</td>
            <td>Always eight bytes.</td>
            <td>int64</td>
            <td>long</td>
            <td>int/long</td>
            <td>int64</td>
            <td>long</td>
            <td>integer/string</td>
            <td>Bignum</td>
          </tr>
        
          <tr id="bool">
            <td>bool</td>
            <td></td>
            <td>bool</td>
            <td>boolean</td>
            <td>boolean</td>
            <td>bool</td>
            <td>bool</td>
            <td>boolean</td>
            <td>TrueClass/FalseClass</td>
          </tr>
        
          <tr id="string">
            <td>string</td>
            <td>A string must always contain UTF-8 encoded or 7-bit ASCII text.</td>
            <td>string</td>
            <td>String</td>
            <td>str/unicode</td>
            <td>string</td>
            <td>string</td>
            <td>string</td>
            <td>String (UTF-8)</td>
          </tr>
        
          <tr id="bytes">
            <td>bytes</td>
            <td>May contain any arbitrary sequence of bytes.</td>
            <td>string</td>
            <td>ByteString</td>
            <td>str</td>
            <td>[]byte</td>
            <td>ByteString</td>
            <td>string</td>
            <td>String (ASCII-8BIT)</td>
          </tr>
        
      </tbody>
    </table>
  </body>
</html>

